0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用MCU播放SD卡视频?——合宙Air105最新demo带你轻松上手

合宙LuatOS 2022-05-31 10:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近期好些小伙伴看到SD卡视频播放效果觉得很不错,询问有没有相关教程。

今天我们将以合宙高性能超值款MCU——Air105开发板为例进行讲解

在进行之前先说一下原理,原理很简单——就是通过MCU,将SD卡中的视频字节流数据读出来在LCD上绘制。

01相关准备工作


硬件准备:

Air105开发板

LCD扩展板

Micro SD读写卡模块

SD卡

排线、面包板若干

注:Air101/Air103开发板也可同样准备,目前demo音频支持尚在开发中,敬请期待。

9788c476-e035-11ec-b80f-dac502259ad0.jpg

软件准备:

开始准备视频字节流数据,我们需要用到FFmpeg这款开源和跨平台的多媒体软件。官方下载win版本的压缩包,获得其中的ffmpeg.exe。

参见https://www.ffmpeg.org/

97bb6c5a-e035-11ec-b80f-dac502259ad0.png

02 视频文件制作


文件准备:

首先准备好一段要播放的视频,和之前的ffmpeg.exe放到一起。

97e79cf8-e035-11ec-b80f-dac502259ad0.png

Windows PowerShell命令输入:

Windows PowerShell输入如下命令,即可将视频转为160x128分辨率的字节流文件:

.\ffmpeg-imwsy.mp4-r20-vfscale=160:128-pix_fmtrgb565be-vcodecrawvideomwsy.rgb

9806bf3e-e035-11ec-b80f-dac502259ad0.png

然后将生成的mwsy.rgb放在SD卡中:

98499926-e035-11ec-b80f-dac502259ad0.png

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视频播放效果


988cc930-e035-11ec-b80f-dac502259ad0.gif

好了,享受不一样的时光~

今天就讲解到这里,快拿出开发板动手试试。合宙MCU系列demo持续更新中,敬请关注!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18627

    浏览量

    387460
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SD NAND、TFSD的应用领域大揭秘

    在如今这个数据爆炸的时代,各类存储设备犹如繁星般闪耀,而SD NAND、TFSD更是其中的佼佼者。它们看似相似,实则各有千秋,在不同的领域和场景中发挥着独特的作用。今天,就让我们
    的头像 发表于 11-30 15:16 415次阅读
    <b class='flag-5'>SD</b> NAND、TF<b class='flag-5'>卡</b>、<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的应用领域大揭秘

    迅为Hi3403开发板极速启航 | 手把手带你玩转核心例程,轻松上手AI视觉!

    迅为Hi3403开发板极速启航 | 手把手带你玩转核心例程,轻松上手AI视觉!
    的头像 发表于 11-19 13:56 1362次阅读
    迅为Hi3403开发板极速启航 | 手把手<b class='flag-5'>带你</b>玩转核心例程,<b class='flag-5'>轻松</b><b class='flag-5'>上手</b>AI视觉!

    解锁存储密码:SD NAND、TFSD的应用全景

    在数据洪流的时代,存储介质就如同数字世界的基石,支撑着各类设备的正常运转。SD NAND、TFSD,虽同属NAND Flash存储介质家族,却因各自独特的“个性”,在不同领域绽放
    的头像 发表于 10-29 14:24 223次阅读

    MCU200T上SD读写流程

    SD MCU200T对应管脚表 SD管脚 FPGA管脚 sd_miso F16
    发表于 10-29 07:04

    如何使用 M487 微控制器 (MCU) 通过 DAC 在 SD 播放 WAV 文件声音?

    使用 M487 微控制器 (MCU) 通过 DAC 在 SD 播放 WAV 文件声音
    发表于 08-20 06:05

    SDIO SD电路设计速成攻略:核心步骤+调试技巧 !

    Digital Input Output)是一种基于SD标准扩展的通用接口,不仅可以应用于存储(如TF/SD),也可以连接其他外部设
    的头像 发表于 08-15 14:32 504次阅读
    SDIO <b class='flag-5'>SD</b><b class='flag-5'>卡</b>电路设计速成攻略:核心步骤+调试技巧 !

    SD—雷龙 SD NAND

    一、SD介绍 1.基本介绍 本质:nand flash + 控制芯片 1.SD ,Secure Digital Card,称为安全数字
    的头像 发表于 07-21 17:59 3249次阅读
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>—雷龙 <b class='flag-5'>SD</b> NAND

    【嵌入式开发】SD—雷龙 SD NAND

    一、SD介绍 1.基本介绍 =本质:nand flash + 控制芯片= 1.SD ,Secure Digital Card,称为安全数字
    发表于 07-21 17:56

    请问k230如何读取sd播放其中的mp3音频,他有库支持吗?

    k230如何读取sd播放其中的mp3音频,他有库支持吗?
    发表于 06-04 06:24

    科普|一文带你认清SD、TF、SIM及eSIM,高手请忽略!

    1.定义SD是SecureDigitalCard的英文缩写,直译就是“安全数字”。一般用于数码相机等,作外存储器用。TF即是T-Flash
    的头像 发表于 05-21 15:56 4623次阅读
    科普|一文<b class='flag-5'>带你</b>认清<b class='flag-5'>SD</b><b class='flag-5'>卡</b>、TF<b class='flag-5'>卡</b>、SIM及eSIM<b class='flag-5'>卡</b>,高手请忽略!

    技术篇:Air8101视频录制常见问题与SD读写性能及上传阿里云教程详解!

    本文将以Air8101开发板为例: 实现MP4视频录制,保存到SD以及通过HTTP POST上传到阿里云OSS的功能。   在工业监控、智能垃圾分类、无人售货机开箱取物等等实际应用中
    的头像 发表于 05-07 14:14 1009次阅读
    技术篇:<b class='flag-5'>Air</b>8101<b class='flag-5'>视频</b>录制常见问题与<b class='flag-5'>SD</b><b class='flag-5'>卡</b>读写性能及上传阿里云教程详解!

    Air8101实践指南:视频录制+SD存储+上传阿里云解析

    本文将以Air8101开发板为例:实现MP4视频录制,保存到SD以及通过HTTP POST上传到阿里云OSS的功能。   在工业监控、智能垃圾分类、无人售货机开箱取物等等实际应用中,
    的头像 发表于 05-06 14:18 765次阅读
    <b class='flag-5'>Air</b>8101实践指南:<b class='flag-5'>视频</b>录制+<b class='flag-5'>SD</b><b class='flag-5'>卡</b>存储+上传阿里云解析

    [上手体验]雷龙SD NAND:比TF更小更耐用

    和SPI FLASH以及 NAND FLASH,基本没听说过SD NAND。查阅了雷龙官方介绍),得知SD NAND俗称贴片式TF,虽然SD NAND 和TF
    发表于 03-08 14:28

    Air8000工业引擎:多IO多功能,即将量产

    科技近日宣布,其工业引擎Air8000即将进入量产阶段。这款引擎集成了4G、Wi-Fi、BLE、GNSS、Gsensor及电源管理等多项功能,专为工业应用而设计,展现了强大的场景解决能力
    的头像 发表于 01-07 14:56 2897次阅读

    4G模组SD使用技巧|专家指南

    今天我们学习的是4G模组SD使用技巧,以Air724UG为例做出指南供大家参考。
    的头像 发表于 12-14 09:37 1164次阅读
    4G模组<b class='flag-5'>SD</b><b class='flag-5'>卡</b>使用技巧|专家指南