|
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编码后将图像数据保存至文件。
![]()
图 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-软件资料\Demo\platform-demos\isp_demo\result\iqfiles\”目录下的ov13850_RK-CMK-8M-2-v1_CK8401.json文件,拷贝至评估板"/etc/iqfiles/"目录下。 备注:本案例需通过.json文件进行ISP处理,否则输出效果偏绿色。
![]()
图 27
然后将案例"\gst_v4l2_enc_udp\dts\bin\"目录下的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:输入与输出分辨率的宽度。 -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
![]()
图 31
![]()
图 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
![]()
图 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
案例编译设备树编译将案例"dts\src\"目录下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
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
|