發布日期:2022-04-26 點擊率:84
1). 簡介
高清多媒體,甚至是 4K 視頻不僅在消費領域有著旺盛的需求,在行業領域同樣也獲得廣泛的關注。NXP 最新的IMX8 處理器不僅配有強勁的 CPU和GPU,還對多媒體應用提供了完善的解決方案,如硬件解碼支持H.265 HEVC Main Profile 2160p60 Level 5.1。下面我們將介紹如何從Yocto開始構建包含Gstreamer 的BSP、使用Toradex Easy Installer 安裝系統、配置LVDS顯示和播放多媒體文件。
本文演示所使用的ARM平臺來自Toradex基于NXP iMX8QM SoC平臺的Apalis iMX8QM ARM核心板。
2). Yocto/OpenEmbedded編譯
Toradex Linux BSP 從 V3.0 開始發生了很多的變化,其中最主要的就是采用基于 Poky 構建,默認的 BSP 只提供最小化的軟件支持, 為此我們撰寫了一篇博文做了詳細的說明。用戶需要自行構建合適其項目需求的 BSP,同時也保持BSP精簡。首先,可以參考該網頁搭建基礎的 Yocto/OpenEmbedded 環境。然后修改 build/conf/local.conf文件,在結尾添加以下內容:
----------------------------------
ACCEPT_FSL_EULA = "1"
IMAGE_INSTALL_append = " packagegroup-fsl-gstreamer1.0 packagegroup-fsl-gstreamer1.0-full imx-gst1.0-plugin"
----------------------------------
保存后使用 MACHINE=apalis-imx8 bitbake console-tdx-image 命令來生成我們需要的 BSP。根據網絡和電腦配置情況,首次編譯需要數個小時之久。編譯完成后在build/deploy/images/apalis-imx8 目錄下會生成 Apalis-iMX8_Console-Image-Tezi_3.0bX-XXXXXXXX.ta r文件。
3). 更新BSP
Toradex Easy Installer 為用戶提供在圖形化界面中更新 BSP 的方法。根據該文檔配置好 PC 和開發板之間的正確連線。然后從這里下載適用于 Apalis iMX8QM 的Toradex Easy Installer 文件。解壓后,待 Apalis iMX8QM 進入恢復模式后執行恢復腳本。
----------------------------------
sudo recovery-linux.sh
----------------------------------
將 Apalis-iMX8_Console-Image-Tezi_3.0bX-XXXXXXXX.tar 解壓后復制到 U 盤或者 SD 卡,并插入到底板。在 Toradex Easy Installer 界面中點擊該 BSP 即可完成安裝。最后選擇重啟模塊。
4). LVDS顯示器配置
Apalis iMX8QM上連接 1080p HDMI 顯示器可以直接看到 Linux 系統。在這里我們還將介紹如何配置 LVDS 接口顯示器。目前還不能直接在 U-Boot 中通過 cmdline 的方式進行顯示配置,用戶需要修改 device tree 文件 fsl-imx8qm-apalis.dts,將 lvds1_panel 的 compatible 設置適合屏幕的配置。LVDS顯示配置是直接編譯在內核中,用戶可以從 drivers/gpu/drm/panel 中選擇現成的配置,否則需要自行添加適合屏幕參數的配置文件。kyo_tcg121xglp_timing 在引腳和色彩配置都符合我們現有的三菱AA104XD02 顯示器,因此將 lvds1_panel 配置為 kyo,tcg121xglp。然后重新編譯 device tree。
----------------------------------
make dtbs
----------------------------------
用生成的 fsl-imx8qm-apalis.dtb 替換核心板上 /media/mmcblk0p1/ 目錄下的同名文件,重啟生效。
----------------------------------
root@apalis-imx8:~# sync
root@apalis-imx8:~# reoobt
----------------------------------
5). 媒體播放
BSP 中已經集成了 Gstreamer 工具和 IMX 插件,用戶可以直接調用。顯示分別是播放 H.265/H.264 編碼分辨率為 1080p/2K/4K 的本地文件。
./ 1080p h.264
----------------------------------
gst-launch-1.0 filesrc location=jellyfish-20-mbps-hd-h264.mkv ! video/x-matroska ! aiurdemux !
queue ! h264parse ! v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink
----------------------------------
./ 1080p h.265
----------------------------------
gst-launch-1.0 filesrc location=Elecard_about_Tomsk_part3_HEVC_1080p.mp4 ! video/quicktime !
aiurdemux ! queue ! h265parse ! v4l2h265dec ! imxvideoconvert_g2d ! queue ! waylandsink
----------------------------------
./ 2k h.264
----------------------------------
gst-launch-1.0 filesrc location=Gravity-2K.mp4 ! video/quicktime ! aiurdemux ! queue ! h264parse !
v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink
----------------------------------
./ 4k h.265
----------------------------------
gst-launch-1.0 filesrc location=Elecard_about_Tomsk_part3_HEVC_UHD.mp4 ! video/quicktime ! aiurdemux !
queue ! h265parse ! v4l2h265dec ! imxvideoconvert_g2d ! queue ! waylandsink
----------------------------------
除了本地播放外,RTSP網絡播放也是常用的功能。RTSP服務器可以有多種實現方式,如 VLC 就可以支持流推送。Gst 也提供現成的工具實現 RTSP 服務,如gst-rtsp-server。在下載的時候最好選用和 iMX8 BSP 中 Gstreamer 一致的版本。下載后執行 autogen.sh,然后直接 make編譯即可。在 example 目錄中會生成一個名為 test-uri 的可執行文件。用下面命令推送視頻流。
----------------------------------
./test-uri file:///opt/jellyfish-20-mbps-hd-h264.mkv
在 PC 的 8554 端口會開啟RTSP服務。
----------------------------------
rtsp://127.0.0.1:8554/test
----------------------------------
IMX8上運行下面命令
----------------------------------
gst-launch-1.0 rtspsrc location=rtsp://ip_of_pc:8554/test name=source1 ! queue ! rtph264depay !
queue ! h264parse ! v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink
----------------------------------
6). 總結
IMX8QM 可以輕松的實現對視頻文件的硬件編解碼,而不占用過多的 CPU 資源,從而保證用戶應用順暢運行。除了視頻播放,我們接下來還會介紹 IMX8 更多的應用。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航