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文章
6507浏览量
121359 -
RK3588
+关注
关注
8文章
601浏览量
7695
发布评论请先 登录
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—视频开发案例(上)
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT主站开发案例(下)
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT主站开发案例(上)
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—物联网模块开发案例
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—Linux-RT应用开发案例
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—Linux应用开发手册
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—视频开发案例(下)
评论