前 言
本文主要介紹基于創(chuàng)龍科技TLT113-EVM評估板的視頻開發(fā)案例,適用開發(fā)環(huán)境如下。
Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機:VMware15.5.5
Linux開發(fā)環(huán)境:Ubuntu18.04.4 64bit
U-Boot:U-Boot-2018.07
Kernel:Linux-5.4.61、Linux-RT-5.4.61
LinuxSDK:T113_Tina5.0-V1.0(Linux)
我司提供的視頻開發(fā)案例位于產(chǎn)品資料“4-軟件資料Demoplatform-demos”目錄下,案例具體功能說明如下:

評估板文件系統(tǒng)默認(rèn)已支持GStreamer和OpenCV庫,可執(zhí)行如下命令查看。
Target# gst-inspect-1.0 -h
Target# ls /usr/lib/libopencv*
圖?1
OpenCV是一個基于Apache2.0許可(開源)發(fā)行的跨平臺計算機視覺和機器學(xué)習(xí)軟件庫,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。
GStreamer是用來構(gòu)建流媒體應(yīng)用的開源多媒體框架,其目標(biāo)是要簡化音視頻應(yīng)用程序的開發(fā),目前可被用于處理MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime等多種格式的多媒體數(shù)據(jù)。
v4l2_enc_udp案例
案例說明
案例功能:使用Linux子系統(tǒng)V4L2實現(xiàn)視頻采集和顯示,并將視頻進行JPEG硬件編碼后,實現(xiàn)視頻文件保存和推流。
案例支持list、save、display、dis-save、udp五種功能模式,通過命令行參數(shù)傳入主程序進行選擇。功能模式簡要說明如下:
list模式:查詢攝像頭設(shè)備,并打印設(shè)備相關(guān)信息,比如分辨率、幀率、格式等。
save模式:采集攝像頭的圖像數(shù)據(jù),進行JPEG編碼后將圖像數(shù)據(jù)保存至文件。
display模式:采集攝像頭圖像數(shù)據(jù),寫入至framebuffer生成圖像并顯示,格式為NV12。
dis-save模式:采集攝像頭圖像數(shù)據(jù),然后輸出至指定顯示設(shè)備,同時進行JPEG編碼并保存至文件。
udp模式:采集攝像頭圖像數(shù)據(jù),經(jīng)JPEG編碼,最后通過UDP協(xié)議發(fā)送至上位機。
圖?2
案例使用LinuxSDK開發(fā)包所提供的libvencoder.so庫文件,支持輸入像素格式為NV12、NV21、I420、YV12,支持輸出編碼格式為JPEG。本案例使用輸入像素格式為NV12,輸出編碼格式為JPEG。
案例測試
本案例使用逸森(Eviresn)公司的倒車后視高清CCD攝像頭,NTSC制式,幀率可達30fps。
評估板斷電,通過網(wǎng)線將評估板ETH0(RGMII)網(wǎng)口與PC機連接至同一個路由器,將一路CCD攝像頭接入評估板CVBS IN0或CVBS IN1接口,并將HDMI OUT接口連接至HDMI顯示屏。硬件連接如下圖所示。
圖?3
請將案例bin目錄下的v4l2_enc_udp可執(zhí)行程序拷貝至評估板文件系統(tǒng)任意目錄下,并進入可執(zhí)行程序所在目錄,執(zhí)行如下命令查看程序參數(shù)信息。
Target# ./v4l2_enc_udp --help
圖?4
參數(shù)解析:
-m:設(shè)置運行模式。
-d:設(shè)置目標(biāo)設(shè)備。
-t:設(shè)備接口類型選擇。
-F:設(shè)置采集格式。
-f:設(shè)置采集幀率,若攝像頭不支持幀率設(shè)置,則設(shè)為0。
-i:設(shè)置攝像頭分辨率。
-I:設(shè)置顯示設(shè)備分辨率。
-a:設(shè)置與評估板進行UDP通信的上位機IP和端口號。
-o:設(shè)置輸出目標(biāo),display/dis_save模式下為"/dev/disp"設(shè)備節(jié)點。
-e:save/dis_save模式下,設(shè)置保存文件路徑。
-c:設(shè)置CVBS IN的通道,0為評估板CVBS IN0接口,1為CVBS IN1接口。
-v:版本信息。
--help:幫助信息。
請根據(jù)分辨率、幀率等信息查詢結(jié)果進行程序參數(shù)設(shè)置,否則程序無法正常執(zhí)行。分辨率與幀率需與查詢信息一一對應(yīng),如無幀率信息,則說明攝像頭不支持設(shè)置幀率,無需在命令中指定"-f"參數(shù)。
本次測試使用CVBS IN0接口實現(xiàn)一路CCD攝像頭的視頻采集,設(shè)備節(jié)點為"/dev/video4"。
圖?5
進入評估板文件系統(tǒng)執(zhí)行如下命令,關(guān)閉Qt程序,初始化framebuffer。
Target# killall Launcher //關(guān)閉Qt程序
Target# fbinit //初始化framebuffer
圖?6
在Ubuntu系統(tǒng)中執(zhí)行如下命令,在線安裝Gstreamer相關(guān)軟件包,搭建Gstreamer環(huán)境。如提示安裝失敗,請嘗試更換源再重新在線安裝。
Host# sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio -y
圖?7
(1)list模式測試
在v4l2_enc_udp可執(zhí)行程序所在目錄下,執(zhí)行如下命令,查看評估板CVBS IN0接口的攝像頭信息。如需查看CVBS IN1接口,請將命令中的"-c 0"修改為"-c 1",CVBS IN1接口設(shè)備節(jié)點與CVBS IN0接口一致。
Target# ./v4l2_enc_udp -m list-c 0-d /dev/video4
圖?8
備注:目前攝像頭僅支持NV12格式的圖像。由于官方Linux系統(tǒng)驅(qū)動存在缺陷,上圖查詢攝像頭的信息不準(zhǔn)確。
(2)save模式測試
執(zhí)行如下命令采集圖像,經(jīng)JPEG編碼后,將圖像數(shù)據(jù)保存為test.jpeg文件。按"Ctrl + C"停止運行。
參數(shù)"-m save"設(shè)置運行模式為save,"-d /dev/video4"設(shè)置設(shè)備節(jié)點"/dev/video4","-F NV12"設(shè)置采集圖像格式為NV12,"-i 720*480"設(shè)置攝像頭分辨率為720x480,"-f 30"設(shè)置采集幀率為30fps,"-I 720*480"設(shè)置顯示設(shè)備分辨率720x480,"-e ./test.jpeg"設(shè)置保存文件路徑。
Target# ./v4l2_enc_udp -m save -c 0 -d /dev/video4 -F NV12 -i 720*480 -I 720*480 -f 30 -e ./test.jpeg
圖?9
(3)display模式測試
執(zhí)行如下命令采集圖像,并輸出至顯示設(shè)備。
參數(shù)"-m display"設(shè)置運行模式為display,"-o /dev/disp"設(shè)置顯示設(shè)備節(jié)點。
Target# ./v4l2_enc_udp -m display -d /dev/video4 -c 0 -F NV12 -i 720*480 -I 720*480 -f 30 -o /dev/disp
圖?10
圖?11
(4)dis_save模式測試
執(zhí)行如下命令采集圖像輸出至顯示設(shè)備,同時進行JPEG編碼后,將圖像數(shù)據(jù)保存為test.jpeg文件。
參數(shù)"-m dis_save"設(shè)置運行模式為dis_save,"-o /dev/disp"設(shè)置顯示設(shè)備節(jié)點,"-e ./test.jpeg"設(shè)置保存文件路徑。
Target# ./v4l2_enc_udp -m dis-save -d /dev/video4 -c 0 -F NV12 -i 720*480 -I 720*480 -f 30 -o /dev/disp -e ./test.jpeg
圖?12
圖?13
(5)udp模式測試
在Ubuntu系統(tǒng)中執(zhí)行如下命令,通過gst-launch-1.0工具將評估板發(fā)送的圖像進行顯示。
Host# gst-launch-1.0 -v udpsrc port=50000 ! jpegparse ! jpegdec ! videoconvert ! xvimagesink sync=false
圖?14
執(zhí)行如下命令采集圖像,經(jīng)JPEG編碼后,通過UDP協(xié)議發(fā)送至上位機。
參數(shù)"-m udp"設(shè)置運行模式為udp,"-a 192.168.13.66:50000"設(shè)置上位機IP地址和端口號。
Target# ./v4l2_enc_udp -m udp -c 0 -d /dev/video4 -F NV12 -i 720*480 -f 30 -a 192.168.13.66:50000
圖?15
此時,評估板程序運行成功后,上位機將會彈出gst-launch-1.0顯示窗口并顯示評估板發(fā)送的圖像。
圖?16
案例編譯
將案例src源碼目錄拷貝至Ubuntu工作目錄下,進入源碼目錄,執(zhí)行如下命令修改Rules.mk配置文件,將SDK_DIR路徑修改為LinuxSDK開發(fā)包實際路徑,將SDK_OUT_SYS路徑修改為buildroot實際路徑。
Host# vi Rules.mk
圖?17
修改內(nèi)容如下:
備注:若為eMMC配置評估板,請將路徑"tlt113-evm-nand"修改為"tlt113-evm-emmc"。
SDK_DIR = /home/tronlong/T113/tina5.0_v1.0 //設(shè)置LinuxSDK包安裝路徑
SDK_OUT_SYS = $(SDK_DIR)/out/t113_i/tlt113-evm-nand/buildroot/buildroot/
圖?18
修改完成,繼續(xù)執(zhí)行如下命令,使用LinuxSDK開發(fā)包目錄下的GCC編譯器進行案例編譯,編譯完成將會在同一個目錄下生成可執(zhí)行程序。
Host# make
圖?19
關(guān)鍵代碼
本案例src目錄下為工程源文件,具體說明如下表所示。

(1)解析命令行參數(shù)。
圖?20?main.c
(2)編碼模塊初始化。
圖?21?main.c
(3)攝像頭初始化。
圖?22?main.c
(4)圖像采集、編碼、顯示、保存和UDP發(fā)送。
圖?23?main.c
(5)釋放資源。
圖?24?main.c
審核編輯 黃宇
-
開發(fā)板
+關(guān)注
關(guān)注
26文章
6289瀏覽量
118050 -
評估板
+關(guān)注
關(guān)注
1文章
931瀏覽量
31177
發(fā)布評論請先 登錄
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—雙屏異顯方案演示
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—Linux系統(tǒng)使用手冊(三)
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—Linux系統(tǒng)使用手冊(二)
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—ARM + FPGA通信案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—ARM + DSP、RISC-V核間通信開發(fā)案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—RISC-V案例開發(fā)手冊(上)
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—DSP案例開發(fā)手冊
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—物聯(lián)網(wǎng)模塊開發(fā)案例(上)
【創(chuàng)龍TLT113-MiniEVM開發(fā)板試用體驗】開箱評測
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—IgH EtherCAT主站開發(fā)案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—MQTT通信協(xié)議案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—Linux-RT應(yīng)用開發(fā)案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—LVGL應(yīng)用開發(fā)案例
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—視頻開發(fā)案例
評論