龙空技术网

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

Tronlong创龙科技 115

前言:

现在各位老铁们对“rtp061magnet”大约比较注意,朋友们都想要知道一些“rtp061magnet”的相关知识。那么小编在网上网罗了一些关于“rtp061magnet””的相关内容,希望看官们能喜欢,大家快快来了解一下吧!

本文主要介绍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目录存放源码。

TL7611P模块(HDMI视频采集)

准备一台拥有VGA和HDMI接口的PC机(例如笔记本),并将VGA接口连接VGA显示屏。VGA显示屏作为主显示器用作测试工作使用。通过HMDI数据线将PC机HDMI接口连接模块HDMI接口,PC机HDMI接口用作HDMI信号输出。

在PC机的显卡设备中设置HDMI作为次显示屏,选择多屏显示栏目下的扩展桌面选项,并设置分辨率为1920 x 1080、刷新率为60pHz。

图 66

图 67

图 68

请按照上图进行硬件连接,评估板上电进入文件系统,依次执行如下命令加载模块动态设备树。

Target# mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际情况修改

Target# echo -n "tl5728-evm-vip-adv7611-overlay.dtbo" > /configfs/device-tree/overlays/full/path

图 69

执行如下脚本设置输出分辨率。

Target# ./adv7611.sh 4 //参数4指定驱动层面的I2C4,对应硬件为I2C5

图 70

display功能模式测试

执行如下命令采集视频流,并在显示屏中显示。可按“Ctrl+C”可终止程序运行。

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

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

Target# ./tl-gst-v4l2-vpe-iva-udp -m display -d /dev/video1 -i 1920*1080 -o 1920*1080

图 71

图 72

save功能模式测试

执行如下命令采集视频流,并将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。

Target# ./tl-gst-v4l2-vpe-iva-udp -m save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264

图 73

由于ducatih264enc插件编码生成的H.264视频流只包含图像数据,但不包含时间戳,因此不能使用常用的视频播放器进行播放。可通过第三方工具FFmpeg将其转码为MP4格式,再使用常用视频播放器进行播放。具体方法请参考本文档H.264视频流MP4格式转码方法章节。

dis-save功能模式测试

执行如下命令采集视频流并在显示屏中显示,同时将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。

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

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

Target# ./tl-gst-v4l2-vpe-iva-udp -m dis-save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264

图 74

图 75

udp功能模式测试

使用udp功能模式时,测试方法有如下三种。

表 9

测试设备

发送端

接收端

硬件连接

一块评估板

评估板A

评估板A

使用网线将评估板网口RGMII0 ETH连接到路由器,进行本地网络回环测试

两块评估板

评估板A

评估板B

使用网线将两块评估板网口RGMII0 ETH连接到同一个路由器

评估板+上位机(Ubuntu)

评估板A

上位机(Ubuntu)

使用网线将评估板网口RGMII0 ETH、上位机网口连接到同一个路由器

发送端

请在发送端执行如下命令采集视频,同时进行H.264编码并通过UDP网络将视频流传输到接收端。192.168.0.99为接收端IP地址,8080为端口号,请根据实际情况修改。

Target# ./tl-gst-v4l2-vpe-iva-udp -m udp -d /dev/video1 -i 1920*1080 -o 1920*1080 -a 192.168.0.99:8080

图 76

接收端

使用一块评估板或两块评估板方时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。显示分辨率可根据实际情况修改,注意端口号需与发送端保持一致。

使用一块评估板方式时,需先运行接收进程,再运行发送进程。可在命令后添加&符号使进程在后台运行,或通过OpenSSH等方式启用第二个命令行终端运行进程。

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

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

Target# gst-launch-1.0 -v udpsrc port=8080 ! 'application/x-rtp,media=(string)video,payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12, width=1920,height=1080,framerate=30/1' ! kmssink sync=false

图 77

图 78

使用评估板+上位机(Ubuntu)方式时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。注意端口号需与发送端保持一致。

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

图 79

图 80

TL-VPortP模块(CMOS摄像头)

图 81

请按照上图进行硬件连接,评估板上电进入文件系统,依次执行如下命令。

Target# devmem2 0x4A003698 w 0x0001000E //配置xref_clk1复用为GPIO6_18

Target# echo 178 > /sys/class/gpio/export //通过导出GPIO6_18设备节点目录

Target# echo out > /sys/class/gpio/gpio178/direction //配置GPIO6_18为输出

Target# echo 0 > /sys/class/gpio/gpio178/value //配置GPIO6_18输出低电平

图 82

依次执行如下命令加载模块动态设备树。

Target# mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际情况修改

Target# echo -n "tl5728-evm-vip-ov5640-overlay.dtbo" > /configfs/device-tree/overlays/full/path

图 83

display功能模式测试

执行如下命令采集视频流,并在显示屏中显示。可按“Ctrl + C”可终止程序运行。

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

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

Target# ./tl-gst-v4l2-vpe-iva-udp -m display -d /dev/video1 -i 1920*1080 -o 1920*1080

图 84

图 85

save功能模式测试

执行如下命令采集视频流,并将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。

Target# ./tl-gst-v4l2-vpe-iva-udp -m save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264

图 86

由于ducatih264enc插件编码生成的H.264视频流只包含图像数据,但不包含时间戳,因此不能使用常用的视频播放器进行播放。可通过第三方工具FFmpeg将其转码为MP4格式,再使用常用视频播放器进行播放。具体方法请参考本文档H.264视频流MP4格式转码方法章节。

dis-save功能模式测试

执行如下命令采集视频流并在显示屏中显示,同时将ducatih264enc插件编码生成的H.264视频流保存在当前目录下。

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

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

Target# ./tl-gst-v4l2-vpe-iva-udp -m dis-save -d /dev/video1 -i 1920*1080 -o 1920*1080 -f test.264

图 87

图 88

udp功能模式测试

使用udp功能模式时,测试方法有如下三种。

表 10

测试设备

发送端

接收端

硬件连接

一块评估板

评估板A

评估板A

使用网线将评估板网口RGMII0 ETH连接到路由器,进行本地网络回环测试

两块评估板

评估板A

评估板B

使用网线将两块评估板网口RGMII0 ETH连接到同一个路由器

评估板+上位机(Ubuntu)

评估板A

上位机(Ubuntu)

使用网线将评估板网口RGMII0 ETH、上位机网口连接到同一个路由器

发送端

请在发送端执行如下命令采集视频,同时进行H.264编码并通过UDP网络将视频流传输到接收端。192.168.0.99为接收端IP地址,8080为端口号,请根据实际情况修改。

Target# ./tl-gst-v4l2-vpe-iva-udp -m udp -d /dev/video1 -i 1920*1080 -o 1920*1080 -a 192.168.0.99:8080

图 89

接收端

使用一块评估板或两块评估板方时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。显示分辨率可根据实际情况修改,注意端口号需与发送端保持一致。

使用一块评估板方式时,需先运行接收进程,再运行发送进程。可在命令后添加&符号使进程在后台运行,或通过OpenSSH等方式启用第二个命令行终端运行进程。

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

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

Target# gst-launch-1.0 -v udpsrc port=8080 ! 'application/x-rtp,media=(string)video,payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12, width=1920,height=1080,framerate=30/1' ! kmssink sync=false

图 90

图 91

使用评估板+上位机(Ubuntu)方式时,请在接收端执行如下命令通过UDP网络接收视频流,同时进行解码与显示。注意端口号需与发送端保持一致。

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

图 92

图 93

时延测试

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

ZH5640-MIC-001(USB CMOS摄像头)

表 11 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:02.629

00:01:02.844

215

2

00:02:02.823

00:02:03.038

215

3

00:03:05.404

00:03:05.706

302

4

00:04:07.984

00:04:08.113

129

5

00:05:08.177

00:05:08.392

215

平均值

/

/

222

表 12 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:07.487

00:01:07.745

258

2

00:02:09.632

00:02:09.939

307

3

00:03:02.089

00:03:02.347

258

4

00:04:07.421

00:04:07.636

215

5

00:05:04.001

00:05:04.173

172

平均值

/

/

248

表 13 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:02.163

00:01:02.765

602

2

00:02:04.579

00:02:05.087

508

3

00:03:07.832

00:03:08.441

609

4

00:04:08.904

00:04:09.505

601

5

00:05:01.924

00:05:02.526

602

平均值

/

/

585

表 14 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:03.655

00:01:04.300

645

2

00:02:08.819

00:02:09.503

684

3

00:03:01.052

00:03:01.569

517

4

00:04:02.953

00:04:03.592

639

5

00:05:04.707

00:05:05.395

688

平均值

/

/

635

TL5158P模块(4路D1视频采集)

表 15 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:07.368

00:01:07.496

128

2

00:02:02.528

00:02:03.574

46

3

00:03:04.688

00:03:04.807

119

4

00:04:07.567

00:04:08.658

91

5

00:05:08.626

00:05:08.714

88

平均值

/

/

95

表 16 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:08.024

00:01:08.167

143

2

00:02:00.660

00:02:00.746

86

3

00:03:03.073

00:03:03.197

124

4

00:04:05.661

00:04:05.734

73

5

00:05:04.035

00:05:04.120

85

平均值

/

/

103

表 17 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:08.189

00:01:08.576

387

2

00:02:03.071

00:02:03.459

388

3

00:03:09.374

00:03:09.804

430

4

00:04:04.428

00:04:04.859

431

5

00:05:05.142

00:05:05.528

386

平均值

/

/

405

表 18 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:06.288

00:01:05.987

301

2

00:02:02.955

00:02:02.653

302

3

00:03:08.587

00:03:08.285

302

4

00:04:02.757

00:04:02.457

300

5

00:05:08.090

00:05:07.789

301

平均值

/

/

301

TL7002P模块(VGA视频采集)

表 19 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:04.252

00:01:04.295

43

2

00:02:06.143

00:02:06.186

43

3

00:03:07.906

00:03:07.949

43

4

00:04:09.755

00:04:09.798

43

5

00:05:09.559

00:05:09.602

43

平均值

/

/

43

表 20 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:03.707

00:01:03.750

43

2

00:02:06.201

00:02:06.244

43

3

00:03:08.437

00:03:08.480

43

4

00:04:00.888

00:04:00.931

43

5

00:05:05.681

00:05:05.724

43

平均值

/

/

43

表 21 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:03.798

00:01:04.144

346

2

00:02:09.327

00:02:09.629

302

3

00:03:06.190

00:03:06.490

300

4

00:04:01.373

00:04:01.716

343

5

00:05:06.042

00:05:06.385

343

平均值

/

/

327

表 22 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:07.913

00:01:08.042

129

2

00:02:00.235

00:02:00.364

129

3

00:03:02.558

00:03:02.686

128

4

00:04:04.363

00:04:04.492

129

5

00:05:06.385

00:05:06.557

172

平均值

/

/

138

TL7601P模块(HD-SDI视频采集)

表 23 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:04.093

00:01:04.179

86

2

00:02:06.870

00:02:06.912

42

3

00:03:04.719

00:03:04.805

86

4

00:04:02.870

00:04:02.912

42

5

00:05:09.774

00:05:09.816

42

平均值

/

/

60

表 24 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:05.693

00:01:05.736

43

2

00:02:01.287

00:02:01.373

86

3

00:03:05.998

00:03:06.042

44

4

00:04:02.128

00:04:02.215

87

5

00:05:08.774

00:05:08.817

43

平均值

/

/

61

表 25 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:02.596

00:01:02.985

389

2

00:02:06.143

00:02:06.533

390

3

00:03:01.674

00:03:02.061

387

4

00:04:07.160

00:04:07.545

385

5

00:05:02.600

00:05:02.988

388

平均值

/

/

388

表 26 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:05.210

00:01:05.467

257

2

00:02:09.878

00:02:00.134

256

3

00:03:06.696

00:03:06.997

301

4

00:04:02.524

00:04:02.783

259

5

00:05:01.674

00:05:01.974

300

平均值

/

/

275

TL7611P模块(HDMI视频采集)

表 27 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:02.588

00:01:02.631

43

2

00:02:07.834

00:02:07.877

43

3

00:03:00.371

00:03:00.414

43

4

00:04:02.607

00:04:02.650

43

5

00:05:04.629

00:05:04.672

43

平均值

/

/

43

表 28 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:06.281

00:01:06.323

42

2

00:02:08.689

00:02:08.731

42

3

00:03:01.225

00:03:01.268

43

4

00:04:03.720

00:04:03.763

43

5

00:05:05.741

00:05:05.784

43

平均值

/

/

43

表 29 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:05.070

00:01:05.242

172

2

00:02:07.263

00:02:07.435

172

3

00:03:09.542

00:03:09.714

172

4

00:04:03.713

00:04:03.885

172

5

00:05:05.949

00:05:06.078

129

平均值

/

/

164

表 30 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:01.611

00:01:01.998

387

2

00:02:07.716

00:02:08.017

301

3

00:03:00.511

00:03:00.855

344

4

00:04:08.640

00:04:08.941

301

5

00:05:01.392

00:05:01.693

301

平均值

/

/

327

TL-VPortP模块(CMOS摄像头)

表 31 display功能模式测试结果

序号

评估板显示画面

PC机显示画面

时延(ms)

1

00:01:09.375

00:01:09.550

175

2

00:02:04.879

00:02:05.093

214

3

00:03:07.414

00:03:07.55

141

4

00:04:09.564

00:04:09.778

214

5

00:05:01.844

00:05:02.069

225

平均值

/

/

193

表 32 dis-save功能模式测试结果

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:06.562

00:01:06.693

131

2

00:02:09.357

00:02:09.620

263

3

00:03:02.195

00:03:02.327

132

4

00:04:05.334

00:04:05.555

224

5

00:05:07.191

00:05:07.403

212

平均值

/

/

191

表 33 udp功能模式测试结果(接收端:评估板)

序号

评估板显示界面

PC机显示界面

时延(ms)

1

00:01:00.956

00:01:01.300

344

2

00:02:06.398

00:02:06.742

344

3

00:03:01.580

00:03:02.061

481

4

00:04:07.804

00:04:08.236

432

5

00:05:09.636

00:05:10.021

385

平均值

/

/

398

表 34 udp功能模式测试结果(接收端:上位机)

序号

上位机显示界面

PC机显示界面

时延(ms)

1

00:01:00.667

00:01:01.013

346

2

00:02:02.946

00:02:03.293

347

3

00:03:05.062

00:03:05.398

336

4

00:04:07.375

00:04:07.769

394

5

00:05:09.655

00:05:00.084

429

平均值

/

/

370

案例解析GStreamer管道示意图

图 94 display功能模式

图 95 save功能模式

图 96 dis-save功能模式

图 97 udp功能模式

关键代码说明初始化GStreamer,创建Pipeline。

图 98

创建Pipeline组件并初始化。

图 99

检查组件初始化情况。

图 100

配置各组件参数。

图 101

图 102

链接组件到Pipeline。

图 103

图 104

图 105

使能Pipeline。

图 106

停止Pipeline,并释放GStreamer。

图 107

计时线程。

图 108

案例编译

将该案例的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

图 109

执行make命令进行案例编译。编译完成后,将在当前目录生成可执行文件tl-gst-v4l2-vpe-iva-udp。

Host# make

图 110

tl-gst-mjpeg-dec-edge案例案例说明

本案例使用GStreamer API通过ARM端从USB摄像头获取MJPEG格式视频流,并调用IVA-HD将视频硬件解码为NV12格式,然后通过OpenCL调用DSP端对NV12格式图像进行Sobel(边缘检测)算法处理,再将经过处理的图像在显示屏中实时显示,同时每隔1s将最新的原始图像以及经过处理的图像保存到本地存储文件中。

程序工作流程框图如下所示:

图 111

案例测试

图 112

请按照上图进行硬件连接,评估板上电进入文件系统,执行如下命令可查看摄像头设备节点为video1。

Target# ls -l /sys/class/video4linux/video*

图 113

请将该案例bin目录下的tl-v4l2-capture、tl-gst-mjpeg-dec-edge文件拷贝至评估板文件系统中。在tl-v4l2-capture文件所在目录下执行如下命令查询摄像头的分辨率、帧率、图像格式等参数。

Target# ./tl-v4l2-capture -m list -d /dev/video1 -t usb

图 114

在tl-gst-mjpeg-dec-edge文件所在目录下,执行如下命令查询tl-gst-mjpeg-dec-edge程序参数说明,具体如下表。

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

图 115

表 35

参数

解析

-d

视频设备节点

-i

输入视频分辨率

-r

输入视频帧率

-f

文件保存路径设置

执行如下命令采集视频流进行Sobel(边缘检测)算法处理,再将经过处理的图像在显示屏中实时显示,并将图像保存至eMMC的rootfs分区的“/home/root/”目录,并将test作为前缀生成test-raw.yuv图像源文件以及经过处理的图像文件test-sobel.yuv。保存路径可根据实际情况修改。

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

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

Target# ./tl-gst-mjpeg-dec-edge -d /dev/video1 -i 1920*1080 -r 15 -f /run/media/mmcblk1p2/home/root/test

图 116

从上图可看到图像处理平均耗时约为12.01ms,图像采集帧率为15fps,图像处理帧率为15fps。Sobel(边缘检测)算法处理效果图如下所示。

图 117

保存的两个文件可在Windows下使用bin目录下的YUV Player工具进行查看,请按照如下图示进行操作。

图 118

图 119

图 120

图 121

图 122

图 123

图 124

时延测试

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

表 36

序号

评估板画面显示

PC机画面显示

时延(ms)

1

00:01:09.552

00:01:09.810

258

2

00:02:02.304

00:02:02.648

344

3

00:03:07.121

00:03:07.421

300

4

00:04:09.915

00:04:00.173

258

5

00:05:02.540

00:05:02.841

301

平均值

/

/

348

案例解析GStreamer管道示意图

图 125

管道命令示例如下。如下命令仅作示例,不能在终端直接运行。

Appsink: gst-launch-1.0 v4l2src device=/dev/video1 ! 'image/jpeg, width=1920, height=1080, framerate = 30/1' ! ducatijpegdec ! appsink emit-signals=true, sync=false

Appsrc: gst-launch-1.0 appsrc ! 'video/x-raw, format=YV12, width=1920, height=1080, framerate=30/1' ! stream-type=0, format=time ! videoconvert ! kmssink sync=false, scale=false

关键代码说明

初始化GStreamer,创建Pipeline。

图 126

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

图 127

配置各组件参数。

图 128

链接组件到Pipeline。

图 129

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

图 130

停止Pipeline,并释放GStreamer。

图 131

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

图 132

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

图 133

时间线程(timing_thread)中,以秒为单位,统计程序运行时间,设置保存标志位,使ocl_thread保存图像数据,输出图像处理平均耗时、图像采集与处理帧率。

图 134

案例编译

将该案例的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

图 135

执行make命令进行编译。

Host# make

图 136

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

图 137

tl-gst-rtsp-dec-edge案例案例说明

本案例使用GStreamer API通过ARM端从网络摄像头获取视频流数据,并调用IVA-HD将视频硬件解码为NV12格式,然后通过OpenCL调用DSP端对NV12格式图像进行Sobel(边缘检测)算法处理,再将经过处理的图像在显示屏中实时显示。

程序工作流程框图如下所示:

图 138

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

标签: #rtp061magnet