加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

使用i.MXRT1060設(shè)計(jì)一個(gè)MP4播放器(FFmpeg解碼庫)

2020/11/04
127
閱讀需 4 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是痞子衡,是正經(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 使用 SAIDMA 進(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

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

碩士畢業(yè)于蘇州大學(xué)電子信息學(xué)院,目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)部門,擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。痞子衡會(huì)定期分享嵌入式相關(guān)文章