大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是基于 i.MXRT1062 的 MP4 播放器参考设计。
i.MXRT1062 是恩智浦 i.MXRT 四位数系列的中端型号,外设搭配上很均衡,辅以 600MHz 主频的炸裂性能。
为了让大家见识到 i.MXRT1062 的能力,特给大家分享一个基于 i.MXRT1062-EVK 开发板的 MP4 播放器设计,mp4 源文件从 SD 卡获取,使用 FFmpeg 库进行软解码,最后将解码出的视频(yuv)数据经 PXP 转换后通过 LCD 屏显示,音频(pcm)数据通过板载 Codec(WM8960)连耳机进行播放。
功能模块简图:
这个设计其实已经断断续续开发优化一年多了,核心的 mp4 文件解码与播放已经全部搞定了。设计主要参考了 SDK 包里的三个例程:从 SD 卡里读取音频源后配置 Codec 使用 SAI 和 DMA 进行数据的传输(sai)、配置 eLCDIF 模块驱动 LCD 屏显示、配置 PXP 模块进行图片色彩空间转换(yuv2rgb)与缩放。
SDK\boards\evkmimxrt1060\demo_apps\sai
SDK\boards\evkmimxrt1060\driver_examples\elcdif\rgb
SDK\boards\evkmimxrt1060\driver_examples\pxp\scale
此外,核心 mp4 解码功能是使用了大名鼎鼎的 FFmpeg 库,库的裁剪颇费周折,因最新库版本 4.x 与之前版本差异较大,而 3.x 版本资料较多,故我们选择的是经典的 3.0.11 版本。关于 FFmpeg 库的学习,从雷霄骅的 CSDN 博文中收获颇多,感谢雷神!
全部硬件清单:
1. MIMXRT1060-EVK (Rev.A)
2. LCD 屏(适配了三款分辨率 480x272、800x600、1280x800),标配 RK043FN02H-CT
3. SD 卡
4. 耳机(3.5mm 接口),或音箱
5. USB 线(连主机供电)
实物连接图(搭配 1280x800 的屏):
代码是开源的,会持续添加功能(考虑加入 GUI,实现一般播放器的选片、暂停、快进等控制功能),欢迎感兴趣的小伙伴加入一起开发!
- 代码仓库:https://github.com/JayHeng/RT-Mp4Player 工程路径:\RT-Mp4Player\boards\evkmimxrt1060\demo_apps\sd_mp4