gst_v4l2_enc_udp案例
案例說明
本案例通過GStreamerAPI創建Pipeline,并使用v4l2src、mpph264enc、tee、udpsink、autovideosink、filesink等插件鏈接至Pipeline,實現ARM端從V4L2視頻節點中獲取視頻流數據,通過插件rockchipmpp,實現硬件解碼后顯示或硬件編碼為H.264格式并保存為文件。
本案例支持save、display、dis-save、udp四種功能模式,通過命令行參數傳入主程序進行選擇。功能模式簡要說明如下:
(1)save模式:采集攝像頭的圖像數據,進行H.264編碼后將圖像數據保存至文件。
圖 21?save模式
(2)display模式:采集攝像頭圖像數據,并生成圖像顯示。
圖 22?display模式
(3)dis-save模式:采集攝像頭圖像數據,然后輸出至指定顯示設備,同時進行H.264編碼并保存至文件。
圖 23?dis-save模式
(4)udp模式:采集攝像頭圖像數據,然后經過H.264編碼,最后通過UDP協議發送至上位機。
圖 24?udp模式
案例測試
請使用FFC軟排線將MIPI攝像頭模塊(型號為創龍科技TL13850)連接至評估板CAMERA2接口,將評估板HDMI OUT接口連接至HDMI顯示屏,通過網線將評估板千兆網口ETH0連接至路由器。
注意:請使用FFC軟排線(30pin,間距0.5mm,同向),按照如下方法進行硬件連接,并仔細核對評估板接口、FFC軟排線、攝像頭三者線序,否則可能燒毀攝像頭。
圖 25
打開Ubuntu,執行如下命令在線安裝Gstreamer相關軟件包。若提示安裝失敗,請嘗試更換源再重新在線安裝。
Host# sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-libav
圖 26
請將產品資料“4-軟件資料Demoplatform-demosisp_demoresultiqfiles”目錄下的ov13850_RK-CMK-8M-2-v1_CK8401.json文件,拷貝至評估板"/etc/iqfiles/"目錄下。
備注:本案例需通過.json文件進行ISP處理,否則輸出效果偏綠色。
圖 27
然后將案例"gst_v4l2_enc_udpdtsbin"目錄下的boot-ov13850-cam2.img鏡像文件(僅支持CAMERA2接口)拷貝至評估板文件系統,執行如下命令替換內核鏡像。
備注:如需固化至eMMC,請將設備節點修改為"/dev/mmcblk0p3"。
Target# dd if=boot-ov13850-cam2.img of=/dev/mmcblk1p3
Target# sync
Target# reboot
圖 28
評估板重啟后,執行如下命令,查看設備節點。
Target# ls /dev/video*
圖 29
請將案例bin目錄下的gst_v4l2_enc_udp可執行程序拷貝至評估板文件系統任意目錄下,進入可執行程序所在目錄,執行如下命令查看程序參數信息。
Target# ./gst_v4l2_enc_udp --help
圖 30
參數解析:
-m:指定程序運行模式。
-d:指定目標設備節點。
-h:輸入與輸出分辨率的高度。
-w:輸入與輸出分辨率的寬度。
-f:save/dis_save模式下,指定保存文件路徑。
-v:版本信息。
--help:幫助信息。
(1)display模式測試
執行如下命令采集視頻,并輸出至顯示設備。按"Ctrl + C"可停止運行運行。
Target# ./gst_v4l2_enc_udp -m display -d /dev/video-camera0-w 1920 -h 1080
圖 31
圖 32
(2)save模式測試
執行如下命令采集視頻,經過H.264編碼后,保存為test.h264文件。按"Ctrl + C"可停止運行程序。
參數"-d /dev/video-camera0"指定設備節點"/dev/video-camera0","-w1920"指定圖像輸入輸出分辨率寬度為1920,"-h1080"指定圖像輸入輸出分辨率高度為1080,"-ftest.h264"指定保存文件路徑。
Target# ./gst_v4l2_enc_udp -m save -d /dev/video-camera0-w 1920 -h 1080 -f test.h264
圖 33
執行如下命令,播放test.h264文件。
Target# gst-play-1.0 test.h264
圖 34
HDMI顯示屏將會播放test.h264文件內容,如下圖所示。
圖 35
(3)dis_save模式測試
執行如下命令采集視頻,并輸出至顯示設備,同時進行H.264編碼后,將圖像數據保存為test.h264文件。按"Ctrl + C"可停止運行程序。
Target# ./gst_v4l2_enc_udp -m dis-save -d /dev/video-camera0-w 1920 -h 1080 -f test.h264
圖 36
圖 37
(4)udp模式測試
打開Ubuntu,執行如下命令,通過gst-launch-1.0工具將評估板發送的視頻進行顯示。
Host# gst-launch-1.0 -v udpsrc port=8080 ! 'application/x-rtp,media=(string)video,payload=(int)96' ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ximagesink sync=false
圖 38
在評估板執行如下命令采集視頻,經過H.264編碼后,通過UDP協議發送至上位機。
備注:IP地址請根據實際情況修改。
Target# ./gst_v4l2_enc_udp -m udp -d /dev/video-camera0-w 1920 -h 1080 -a 192.168.13.51:8080
圖 39
此時,評估板程序運行成功后,上位機將會彈出gst-launch-1.0顯示窗口并顯示評估板發送的視頻。
圖 40
案例編譯
設備樹編譯
將案例"dtssrc"目錄下tl3588-evm-ov13850.dts設備樹拷貝至LinuxSDK源碼"kernel/arch/arm64/boot/dts/rockchip/"目錄下。
圖?41
請按照《Debian系統使用手冊》文檔Debian系統鏡像編譯、生成章節,替換設備樹并重新編譯內核,將生成的內核鏡像文件拷貝至評估板文件系統進行固化,評估板重啟后將會加載新的內核鏡像文件。
程序編譯
將案例源碼拷貝至Ubuntu工作目錄下,進入src源碼目錄,執行如下命令修改makefile文件中的SDK_PATH路徑,請根據實際情況修改為LinuxSDK源碼路徑。
Host# vi makefile
圖 42
圖 43
修改完成后,保存退出,執行如下命令進行編譯,編譯完成后,將會在當前目錄下生成gst_v4l2_enc_udp可執行文件。
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# make
圖 44
關鍵代碼
(1)初始化GStreamer,創建Pipeline。
圖 45
(2)創建初始化Gstreamer元件。
圖 46
(3)檢查元件創建初始化情況。
圖 47
(4)配置各元件參數。
圖 48
(5)鏈接元件至Pipeline。
圖 49
圖 50
(6)使Pipeline開始工作。
圖 51
(7)停止Pipeline,釋放Gstreamer。
圖 52
(8)計時線程。
圖 53
由于篇幅過長等原因,部分內容均不逐一展示,如需獲取完整版詳細資料,請關注創龍科技微信公眾號或官網,或者評論區留言,感謝您的支持!
審核編輯 黃宇
-
開發板
+關注
關注
26文章
6289瀏覽量
118048 -
RK3588
+關注
關注
8文章
556瀏覽量
7320
發布評論請先 登錄
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—視頻開發案例(上)
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(下)
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(上)
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—物聯網模塊開發案例
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Linux-RT應用開發案例
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—視頻開發案例(下)
評論