近期好些小伙伴看到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文章
16984浏览量
350292
发布评论请先 登录
相关推荐
评论