回答

收藏

[分享] 创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—视频开发案例(下)

创龙科技 创龙科技 204 人阅读 | 0 人回复 | 2025-10-20

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

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条