分享

基于AM57x+Artix-7开发板——GStreamer视频开发案例(3)

 创龙科技 2022-05-13

本文主要介绍AM5728基于GStreamer的视频采集、编解码、算法处理、显示以及存储案例,其中包含tl-gst-v4l2-vpe-iva-udp案例、tl-gst-mjpeg-dec-edge案例、.tl-gst-rtsp-dec-edge案例与H.264视频流MP4格式转码方法等。

本次案例测试板卡为创龙科技TL5728F-EVM开发板,它是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板。

其中使用到AM5728开发板的ARM端为Cortex-A15_0核心,DSP端为DSP1核心,开发案例位于产品资料“4-软件资料\Demo\tl-video-demos\”目录下。开发案例中的bin目录存放可执行程序,src目录存放源码。

案例测试

本案例使用的网络摄像头型号为海康威视DS-IPC-B12HV2-IA。

图 139

请按照上图进行硬件连接,并将该案例bin目录下的tl-gst-rtsp-dec-edge文件拷贝至评估板文件系统中。在tl-gst-rtsp-dec-edge文件所在目录下执行如下命令查询程序参数说明,具体如下表。

Target# ./tl-gst-rtsp-dec-edge -h

图 140

表 37

参数

解析

-u

RTSP URL信息,即网络摄像头IP地址信息

-i

输入视频源分辨率

进入评估板文件系统,执行如下命令设置评估板IP,同时请参考海康网络摄像头使用说明书设置网络摄像头IP与评估板IP处于同一网段。

Target# ifconfig eth1 down

Target# ifconfig eth0 192.168.0.100 netmask 255.255.255.0

图 141 评估板IP

图 142 网络摄像头IP

执行如下命令采集视频流进行Sobel(边缘检测)算法处理,再将经过处理的图像在显示屏中实时显示。

Target# /etc/init.d/matrix-gui-2.0 stop //关闭Matrix界面

Target# /etc/init.d/weston stop //关闭Weston窗口系统

Target# ./tl-gst-rtsp-dec-edge -u "rtsp://admin:tl123456@192.168.0.179:554/h264/ch1/main/av_stream" -i 1280*720 //192.168.0.179为摄像头IP地址

参数说明:

admin:管理账户;

tl123456:账户密码;

192.168.0.179:网络摄像头IP地址;

554:RTSP端口号。

图 143

Sobel(边缘检测)算法处理效果图如下所示。

图 144

时延测试

时延测试方法:使用摄像头采集PC机显示屏的在线秒表图像,经过AM5728处理后再将图像进行显示。PC机显示画面与评估板显示画面的时间差,即为时延。进行多次测试,时延结果取其平均值。

表 38

序号

评估板画面显示

PC机画面显示

时延(ms)

0

00:00:19.903

00:00:20.536

633

1

00:00:20.784

00:00:21.403

619

2

00:00:22.903

00:00:23.536

633

3

00:00:24.467

00:00:25.103

636

4

00:00:27.903

00:00:28:552

649

5

00:00:29:503

00:00:30:151

648

6

00:00:30.903

00:00:31.552

649

7

00:00:32:553

00:00:33:219

666

8

00:00:34.220

00:00:34:851

631

平均值

/

/

640

案例解析

GStreamer管道示意图

图 145

关键代码说明

初始化Gstreamer,创建Pipeline。

图 146

创建GStreamer组件并初始化,再检查组件初始化情况。

图 147

配置各组件参数。

图 148

链接组件到Pipeline。

图 149

创建Pipeline状态检测函数,改变Pipeline状态为playing。

图 150

停止Pipeline,并释放GStreamer。

图 151

当appsink Pipeline获取一帧图像后,将触发cb_new_appsink_sample回调函数。回调函数获取从rtsp流解码得到的数据,如果有数据正在进行算法处理,则这部分数据不进行处理,否则交由DSP端进行算法处理。

图 152

图像处理线程(ocl_thread)中,通过OpenCL将边缘检测(Sobel)算法加载至DSP端,并将经过处理的图像数据发送至appsrc pipeline。

图 153

案例编译

将该案例的src目录拷贝至Ubuntu工作目录,进入src源码目录执行如下命令加载Linux Processor SDK环境变量。

Host# source /home/tronlong/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/environment-setup

图 154

执行make命令进行编译。

Host# make

图 155

编译完成后,将在当前目录生成可执行文件tl-gst-rtsp-dec-edge。

图 156

H.264视频流MP4格式转码方法

第三方工具FFmpeg压缩包ffmpeg-4.2.1-win64-static.zip位于产品资料“4-软件资料\Tools\Windows\”目录下,请将其解压至Windows下。

在Windows下,按住“WIN + R”进入CMD命令行模式,如下所示。

图 157

执行如下命令进入FFmpeg的bin目录,并查看当前目录下的文件。

CMD# cd C:\Users\Administrator\Desktop\ffmpeg-4.2.1-win64-static\bin

CMD# dir

图 158

执行如下命令查看FFmpeg的使用说明。

CMD# ffmpeg.exe -h

图 159

请将H.264视频流文件拷贝至Windows,并执行如下命令将H.264视频流文件转码为MP4格式。源文件和输出文件路径请根据实际情况修改。转码后的MP4格式视频文件即可使用常用播放器进行播放。

CMD# ffmpeg.exe -r 30 -i C:\Users\Administrator\Desktop\test\test.264 -y C:\Users\Administrator\Desktop\test\output.mp4

图 160

图 161

图 162

由于本篇案例内容篇幅过长,分为三章分享,想要了解更多案例详情,欢迎内容查看更多,或是在下方评论区留言,即可获取更详细内容、案例源码。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多