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