近期好些小伙伴看到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 -i mwsy.mp4 -r 20 -vf scale=160:128 -pix_fmt rgb565be -vcodec rawvideo mwsy.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持续更新中,敬请关注!
半导体产业今年起面临库存调整压力 硅晶圆厂获利表现开始走缓
红杉资本与芯片颇具渊源
苹果,华为都这么大牌,为什么我会选择唐麦W5?
关于立锜电机控制技术的介绍
Intel显核可开启CUDA加速技术
如何用MCU播放SD卡视频?——合宙Air105最新demo带你轻松上手
怎么学习人工智能
大电流弹片微针模组在智能可穿戴设备中的应用
基于SPCE061和DM9000控制器实现藏文信息交流平台的设计
未来智能制造升级之路的关键技术
德勤、第四范式联合发布数字化转型过程中面临的困惑与难题解决方法
动环监控系统设计原则
给电冰箱增设冷凝器风道
端子线是什么,优质的端子线有什么特征
中美贸易争端背景下,中德合作促进我国汽车产业的转型升级
基于CC-Link网络的PLC器件实现石膏板生产系统的设计
ADC测试出现奇怪的FFT结果
嵌入式处理器市场,Intel不会是ARM的对手?
来访中国、牵手Arm,英特尔这头“大象”要转型
基于JTAG的星型扫描接口的设计及其仿真