近期好些小伙伴看到SD卡視頻播放效果覺得很不錯,詢問有沒有相關教程。
今天我們將以合宙高性能超值款MCU——Air105開發板為例進行講解
在進行之前先說一下原理,原理很簡單——就是通過MCU,將SD卡中的視頻字節流數據讀出來在LCD上繪制。
01相關準備工作
硬件準備:
Air105開發板
LCD擴展板
Micro SD讀寫卡模塊
SD卡
排線、面包板若干
注:Air101/Air103開發板也可同樣準備,目前demo音頻支持尚在開發中,敬請期待。
軟件準備:
開始準備視頻字節流數據,我們需要用到FFmpeg這款開源和跨平臺的多媒體軟件。官方下載win版本的壓縮包,獲得其中的ffmpeg.exe。
參見https://www.ffmpeg.org/
02 視頻文件制作
文件準備:
首先準備好一段要播放的視頻,和之前的ffmpeg.exe放到一起。
Windows PowerShell命令輸入:
Windows PowerShell輸入如下命令,即可將視頻轉為160x128分辨率的字節流文件:
.\ffmpeg-imwsy.mp4-r20-vfscale=160:128-pix_fmtrgb565be-vcodecrawvideomwsy.rgb
然后將生成的mwsy.rgb放在SD卡中:
03 編寫播放代碼
代碼很簡單,首先初始化LCD,之后初始化并掛載SD,然后就是讀視頻向LCD進行draw。
手機上下滑動或橫屏查看:
sys.taskInit(function()
--初始化lcd
spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,48*1000*1000,spi.MSB,1,1)
log.info("lcd.init",
lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 3,w = 160,h = 128,xoffset = 1,yoffset = 2},spi_lcd))
--初始化sd
local spiId = 2
local result = spi.setup(
spiId,--串口id
255, -- 不使用默認CS腳
0,--CPHA
0,--CPOL
8,--數據寬度
400*1000 -- 初始化時使用較低的頻率
)
local TF_CS = pin.PB3
gpio.setup(TF_CS, 1)
--fatfs.debug(1) -- 若掛載失敗,可以嘗試打開調試信息,查找原因
fatfs.mount("SD", spiId, TF_CS, 24000000)
local data, err = fatfs.getfree("SD")
if data then
log.info("fatfs", "getfree", json.encode(data))
else
log.info("fatfs", "err", err)
end
local video_w = 160
local video_h = 128
local rgb_file = "mwsy.rgb"
local buff_size = video_w*video_h*2
local file_size = fs.fsize("/sd/"..rgb_file)
print("/sd/"..rgb_file.." file_size",file_size)
local file = io.open("/sd/"..rgb_file, "rb")
if file then
local file_cnt = 0
local buff = zbuff.create(buff_size)
repeat
if file:fill(buff) then
file_cnt = file_cnt + buff_size
lcd.draw(0, 0, video_w-1, video_h-1, buff)
sys.wait(20)
end
until( file_size - file_cnt < buff_size )
local temp_data = file:fill(buff,0,file_size - file_cnt)
lcd.draw(0, 0, video_w-1, video_h-1, buff)
sys.wait(30)
file:close()
end
while 1 do
sys.wait(1000)
end
end)
最新demo源碼:
https://gitee.com/openLuat/LuatOS/tree/master/demo/video_play/Air105
04視頻播放效果
好了,享受不一樣的時光~
今天就講解到這里,快拿出開發板動手試試。合宙MCU系列demo持續更新中,敬請關注!
-
mcu
+關注
關注
146文章
17312瀏覽量
352208
發布評論請先 登錄
相關推薦
評論