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

电子说

1.4w人已加入

描述

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编码后将图像数据保存至文件。

RK3588图 21 save模式

(2)display模式:采集摄像头图像数据,并生成图像显示。

RK3588图 22 display模式

(3)dis-save模式:采集摄像头图像数据,然后输出至指定显示设备,同时进行H.264编码并保存至文件。

RK3588图 23 dis-save模式

(4)udp模式:采集摄像头图像数据,然后经过H.264编码,最后通过UDP协议发送至上位机。

RK3588图 24 udp模式

案例测试

请使用FFC软排线将MIPI摄像头模块(型号为创龙科技TL13850)连接至评估板CAMERA2接口,将评估板HDMI OUT接口连接至HDMI显示屏,通过网线将评估板千兆网口ETH0连接至路由器。

注意:请使用FFC软排线(30pin,间距0.5mm,同向),按照如下方法进行硬件连接,并仔细核对评估板接口、FFC软排线、摄像头三者线序,否则可能烧毁摄像头。

RK3588图 25

打开Ubuntu,执行如下命令在线安装Gstreamer相关软件包。若提示安装失败,请尝试更换源再重新在线安装。

Host# sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-libav

RK3588图 26

请将产品资料“4-软件资料Demoplatform-demosisp_demoresultiqfiles”目录下的ov13850_RK-CMK-8M-2-v1_CK8401.json文件,拷贝至评估板"/etc/iqfiles/"目录下。

备注:本案例需通过.json文件进行ISP处理,否则输出效果偏绿色。

RK3588图 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

RK3588图 28

评估板重启后,执行如下命令,查看设备节点。

Target# ls /dev/video*

RK3588图 29

请将案例bin目录下的gst_v4l2_enc_udp可执行程序拷贝至评估板文件系统任意目录下,进入可执行程序所在目录,执行如下命令查看程序参数信息。

Target# ./gst_v4l2_enc_udp --help

RK3588图 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

RK3588图 31

RK3588图 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

RK3588图 33

执行如下命令,播放test.h264文件。

Target# gst-play-1.0 test.h264

RK3588图 34

HDMI显示屏将会播放test.h264文件内容,如下图所示。

RK3588图 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

RK3588图 36

RK3588图 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

RK3588图 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

RK3588图 39

此时,评估板程序运行成功后,上位机将会弹出gst-launch-1.0显示窗口并显示评估板发送的视频。

RK3588图 40

案例编译

设备树编译

将案例"dtssrc"目录下tl3588-evm-ov13850.dts设备树拷贝至LinuxSDK源码"kernel/arch/arm64/boot/dts/rockchip/"目录下。

RK3588图 41

请按照《Debian系统使用手册》文档Debian系统镜像编译、生成章节,替换设备树并重新编译内核,将生成的内核镜像文件拷贝至评估板文件系统进行固化,评估板重启后将会加载新的内核镜像文件。

程序编译

将案例源码拷贝至Ubuntu工作目录下,进入src源码目录,执行如下命令修改makefile文件中的SDK_PATH路径,请根据实际情况修改为LinuxSDK源码路径。

Host# vi makefile

RK3588图 42

RK3588图 43

修改完成后,保存退出,执行如下命令进行编译,编译完成后,将会在当前目录下生成gst_v4l2_enc_udp可执行文件。

Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment

Host# make

RK3588图 44

关键代码

(1)初始化GStreamer,创建Pipeline。

RK3588图 45

(2)创建初始化Gstreamer元件。

RK3588图 46

(3)检查元件创建初始化情况。

RK3588图 47

(4)配置各元件参数。

RK3588图 48

(5)链接元件至Pipeline。

RK3588图 49

RK3588图 50

(6)使Pipeline开始工作。

RK3588图 51

(7)停止Pipeline,释放Gstreamer。

RK3588图 52

(8)计时线程。

RK3588图 53

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

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分