大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是基于 i.MXRT1062 的 MP4 播放器參考設(shè)計(jì)。
i.MXRT1062 是恩智浦 i.MXRT 四位數(shù)系列的中端型號(hào),外設(shè)搭配上很均衡,輔以 600MHz 主頻的炸裂性能。
為了讓大家見識(shí)到 i.MXRT1062 的能力,特給大家分享一個(gè)基于 i.MXRT1062-EVK 開發(fā)板的 MP4 播放器設(shè)計(jì),mp4 源文件從 SD 卡獲取,使用 FFmpeg 庫進(jìn)行軟解碼,最后將解碼出的視頻(yuv)數(shù)據(jù)經(jīng) PXP 轉(zhuǎn)換后通過 LCD 屏顯示,音頻(pcm)數(shù)據(jù)通過板載 Codec(WM8960)連耳機(jī)進(jìn)行播放。
功能模塊簡(jiǎn)圖:
這個(gè)設(shè)計(jì)其實(shí)已經(jīng)斷斷續(xù)續(xù)開發(fā)優(yōu)化一年多了,核心的 mp4 文件解碼與播放已經(jīng)全部搞定了。設(shè)計(jì)主要參考了 SDK 包里的三個(gè)例程:從 SD 卡里讀取音頻源后配置 Codec 使用 SAI 和 DMA 進(jìn)行數(shù)據(jù)的傳輸(sai)、配置 eLCDIF 模塊驅(qū)動(dòng) LCD 屏顯示、配置 PXP 模塊進(jìn)行圖片色彩空間轉(zhuǎn)換(yuv2rgb)與縮放。
SDKboardsevkmimxrt1060demo_appssai
SDKboardsevkmimxrt1060driver_exampleselcdifrgb
SDKboardsevkmimxrt1060driver_examplespxpscale
此外,核心 mp4 解碼功能是使用了大名鼎鼎的 FFmpeg 庫,庫的裁剪頗費(fèi)周折,因最新庫版本 4.x 與之前版本差異較大,而 3.x 版本資料較多,故我們選擇的是經(jīng)典的 3.0.11 版本。關(guān)于 FFmpeg 庫的學(xué)習(xí),從雷霄驊的 CSDN 博文中收獲頗多,感謝雷神!
全部硬件清單:
1. MIMXRT1060-EVK (Rev.A)
2. LCD 屏(適配了三款分辨率 480x272、800x600、1280x800),標(biāo)配 RK043FN02H-CT
3. SD 卡
4. 耳機(jī)(3.5mm 接口),或音箱
5. USB 線(連主機(jī)供電)
實(shí)物連接圖(搭配 1280x800 的屏):
代碼是開源的,會(huì)持續(xù)添加功能(考慮加入 GUI,實(shí)現(xiàn)一般播放器的選片、暫停、快進(jìn)等控制功能),歡迎感興趣的小伙伴加入一起開發(fā)!
- 代碼倉庫:https://github.com/JayHeng/RT-Mp4Player 工程路徑:RT-Mp4Playerboardsevkmimxrt1060demo_appssd_mp4