创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—视频开发案例(下)
gst_v4l2_enc_udp案例案例说明本案例通过GStreamer API创建Pipeline,并使用v4l2src、mpph264enc、tee、udpsink、autovideosink、filesink等插件链接至Pipeline,实现ARM端从V4L2视频节点中获取视频流数据,通过插件rockchipmpp,实现硬件解码后显示或硬件编码为H.264格式并保存为文件。本案例支持save、display、dis-save、udp四种功能模式,通过命令行参数传入主程序进行选择。功能模式简要说明如下:(1)save模式:采集摄像头的图像数据,进行H.264编码后将图像数据保存至文件。https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17jiAf9MZAAAQH44nmkw895.png
图 21 save模式
(2)display模式:采集摄像头图像数据,并生成图像显示。
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17j-AF3GcAA***CKz55To499.png
图 22 display模式
(3)dis-save模式:采集摄像头图像数据,然后输出至指定显示设备,同时进行H.264编码并保存至文件。
https://file1.elecfans.com/web3/M00/36/21/wKgZPGj17ka***eiRAAAVH5kPc7o026.png
图 23 dis-save模式
(4)udp模式:采集摄像头图像数据,然后经过H.264编码,最后通过UDP协议发送至上位机。
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17k6AZ149AABZeS2yugU051.png
图 24 udp模式
案例测试请使用FFC软排线将MIPI摄像头模块(型号为创龙科技TL13850)连接至评估板CAMERA2接口,将评估板HDMI OUT接口连接至HDMI显示屏,通过网线将评估板千兆网口ETH0连接至路由器。注意:请使用FFC软排线(30pin,间距0.5mm,同向),按照如下方法进行硬件连接,并仔细核对评估板接口、FFC软排线、摄像头三者线序,否则可能烧毁摄像头。
https://file1.elecfans.com/web3/M00/35/84/wKgZO2jx2RuABlHkAEqx2At8uAA177.png
图 25
打开Ubuntu,执行如下命令在线安装Gstreamer相关软件包。若提示安装失败,请尝试更换源再重新在线安装。Host# sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-libav
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17l2AdU5uAAHAqzFAV6A316.png
图 26
请将产品资料“4-软件资料\Demo\platform-demos\isp_demo\result\iqfiles\”目录下的ov13850_RK-CMK-8M-2-v1_CK8401.json文件,拷贝至评估板"/etc/iqfiles/"目录下。备注:本案例需通过.json文件进行ISP处理,否则输出效果偏绿色。
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17mWAHeflAAAMd7JfT0U419.png
图 27
然后将案例"\gst_v4l2_enc_udp\dts\bin\"目录下的boot-ov13850-cam2.img镜像文件(仅支持CAMERA2接口)拷贝至评估板文件系统,执行如下命令替换内核镜像。备注:如需固化至eMMC,请将设备节点修改为"/dev/mmcblk0p3"。Target# dd if=boot-ov13850-cam2.img of=/dev/mmcblk1p3Target# syncTarget# reboot
https://file1.elecfans.com/web3/M00/35/84/wKgZPGjx2PeAIH1WAAAYyzxN2S8054.png
图 28
评估板重启后,执行如下命令,查看设备节点。Target# ls /dev/video*
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17nOAQFAIAAAWSAGRLpI361.png
图 29
请将案例bin目录下的gst_v4l2_enc_udp可执行程序拷贝至评估板文件系统任意目录下,进入可执行程序所在目录,执行如下命令查看程序参数信息。Target# ./gst_v4l2_enc_udp --help
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17nqAfhxPAAA0-Tq3d3g279.png
图 30
参数解析:-m:指定程序运行模式。-d:指定目标设备节点。-h:输入与输出分辨率的高度。-w:输入与输出分辨率的宽度。-a:指定与评估板进行UDP通信的上位机IP和端口号。-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
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17oaAFH3YAABXbvQGm-A298.png
图 31
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17oaAH5xeAAlLfKxBGW8537.png
图 32
(2)save模式测试
执行如下命令采集视频,经过H.264编码后,保存为test.h264文件。按"Ctrl + C"可停止运行程序。参数"-d /dev/video-camera0"指定设备节点"/dev/video-camera0","-w 1920"指定图像输入输出分辨率宽度为1920,"-h 1080"指定图像输入输出分辨率高度为1080,"-f test.h264"指定保存文件路径。Target# ./gst_v4l2_enc_udp -m save -d /dev/video-camera0 -w 1920 -h 1080 -f test.h264
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17pWAY84RAAC4UdgTV1w194.png
图 33
执行如下命令,播放test.h264文件。Target# gst-play-1.0 test.h264
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17pyAOodYAAATBEZ_e6c551.png
图 34
HDMI显示屏将会播放test.h264文件内容,如下图所示。
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17oaAH5xeAAlLfKxBGW8537.png
图 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
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17q6AUzkuAACqZDY38p8623.png
图 36
https://file1.elecfans.com/web3/M00/36/21/wKgZO2j17oaAH5xeAAlLfKxBGW8537.png
图 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
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17r2AYRsUAABqpr7bkqA502.png
图 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
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17sSACbXGAABed0-IRhk295.png
图 39
此时,评估板程序运行成功后,上位机将会弹出gst-launch-1.0显示窗口并显示评估板发送的视频。
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17suAY_K4AATBVliabvU513.png
图 40
案例编译设备树编译将案例"dts\src\"目录下tl3588-evm-ov13850.dts设备树拷贝至LinuxSDK源码"kernel/arch/arm64/boot/dts/rockchip/"目录下。
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17tKAB3cfAABcA_WZ8Qw613.png
图 41
请按照《Debian系统使用手册》文档Debian系统镜像编译、生成章节,替换设备树并重新编译内核,将生成的内核镜像文件拷贝至评估板文件系统进行固化,评估板重启后将会加载新的内核镜像文件。程序编译将案例源码拷贝至Ubuntu工作目录下,进入src源码目录,执行如下命令修改makefile文件中的SDK_PATH路径,请根据实际情况修改为LinuxSDK源码路径。Host# vi makefile
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17t6AeWMxAABVyEnL5gg744.png
图 42
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17t6AFjTUAAGmxVsQrpo988.png
图 43
修改完成后,保存退出,执行如下命令进行编译,编译完成后,将会在当前目录下生成gst_v4l2_enc_udp可执行文件。Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environmentHost# make
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17uyAZmkXAAN10QSFCC8617.png
图 44
关键代码(1)初始化GStreamer,创建Pipeline。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17vSAQqJcAAA3iV-AfeA153.png
图 45
(2)创建初始化Gstreamer元件。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17vqAcw0vAADTQgpR90g192.png
图 46
(3)检查元件创建初始化情况。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17wKACiDBAACJE1CFKmQ391.png
图 47
(4)配置各元件参数。
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17wmABKokAAEBPGW9AqA012.png
图 48
(5)链接元件至Pipeline。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17xOABIR4AACs07Z7-aw517.png
图 49
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17xOAT120AADctjnML9s966.png
图 50
(6)使Pipeline开始工作。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17yGAaTYDAAB9XLE9nLk783.png
图 51
(7)停止Pipeline,释放Gstreamer。
https://file1.elecfans.com/web3/M00/36/22/wKgZPGj17ymAI032AAAuZT8YLDg653.png
图 52
(8)计时线程。
https://file1.elecfans.com/web3/M00/36/22/wKgZO2j17y-AOK2_AAB8fLzOZYc967.png
图 53
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
页:
[1]