gst-rtsp-server搭建与测试

本文实际需要实现功能:通过Gstreamer调用TX2板载摄像头并使用rtsp推流到上位机使用VLC验证。

本文内容:记录过程中已验证问题与现实中需要主要的事项。

媒介:gst-rtsp-server。需要该库作为服务器进行rtsp推流。

    • 试错

在调试刚开始主要是依据Nidia官方手册NVIDIA Jetson Linux Driver Package Software Features进行调试。

在手册Video Streaming with GStreamer-1.0部分中,提供了两种通过 gst-launch-1.0创建pipeline的方式。

•Streaming and video rendering:

•Transmitting (from target) : CSI camera capture + video encode + RTP streaming using network sink:

gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), \
  format=NV12, width=1920, height=1080' ! \
  nvv4l2h264enc insert-sps-pps=true ! h264parse ! \
  rtph264pay pt=96 ! udpsink host=127.0.0.1 port=8001 sync=false -e

•Receiving (on target) : Network Source + video decode + video render:

gst-launch-1.0 udpsrc address=127.0.0.1 port=8001 \
  caps='application/x-rtp, encoding-name=(string)H264, payload=(int)96' ! \
  rtph264depay ! queue ! h264parse ! nvv4l2decoder ! nv3dsink -e

•Streaming and file dump:

•Transmitting (from target) : CSI camera capture + video encode + RTP streaming using network sink:

gst-launch-1.0 nvarguscamerasrc ! \
  'video/x-raw(memory:NVMM), format=NV12, width=1920, height=1080' ! \
  nvv4l2h264enc insert-sps-pps=true ! h264parse ! \
  rtph264pay pt=96 ! udpsink host=127.0.0.1 port=8001 sync=false -e

•Receiving (on target) : Network Source + video decode + file dump:

gst-launch-1.0 udpsrc address=127.0.0.1 port=8001 \
  caps='application/x-rtp, encoding-name=(string)H264, payload=(int)96' ! \
  rtph264depay ! queue ! h264parse ! nvv4l2decoder ! nvvidconv ! \
  'video/x-raw, format=(string)I420' ! filesink location=test.yuv -e

这两种方式在本地自环都没有问题,但是在上位机使用VLC时无法访问该地址。

VLC端输入RTP地址后,提示Cannot assign requested address.

有明白的大佬还请指点一下。

    • gst-rtsp-server下载编译

通过官方论坛了解到有gst-rtsp-server这个库。

https://forums.developer.nvidia.com/t/jetson-tx2-video-streaming/68215

github上有gst-rtsp-server开源库。但是这个库没办法像其他博主写的直接通过autogen.sh文件进行编译。

https://blog.csdn.net/weixin_42780708/article/details/106013966

参考上博文,找到gst-rtsp-server镜像源下载地址。其中1.18及以后的版本也是没办法直接编译的。本文安装的是gst-rtsp-server1.0_1.14.4.orig.tar.xz这个包的内容。

下载解压后在文件夹中找到autogen.sh文件。

在Terminal中输入

./autogen.sh

按照提示输入make进行编译。

我在第一次时出现提示缺少gtk-doc,需要运行

sudo apt-get install gtk-doc-tools

下载gtk-doc工具,完成后再进入到autogen.sh中重新make一次就可以了。

    • rtsp服务器建立与板载摄像头推流

这一部分主要参考博文:

https://blog.csdn.net/zhngyue123/article/details/126362312

首先在examples文件夹中打开Termial,运行指令

gcc test-launch.c -o test $(pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0)

完成后,运行./test,将板载摄像头信号推流

./test --gst-debug-level=3 "(  nvarguscamerasrc ! video/x-raw(memory:NVMM),format=NV12, width=1920, height=1080 ! queue ! nvv4l2h264enc ! h264parse ! rtph264pay name=pay0 pt=96 )"

例程中推流到的地址是//127.0.0.1:8554/test。博主才疏学浅,还没有搞清楚怎么修改这个地址和端口号。有大佬请补充。

完成推流以后在本地自环测试。

gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test

确认没问题,再用主机进行拉流。

使用VLC选择打开网络串流:

地址rtsp://XXXXX:8554/test,其中XXX字段为TX2端的IPV4地址。

其他参考博文:

https://blog.csdn.net/CSDNhuaong/article/details/78507145?ops_request_misc=&request_id=&biz_id=102&utm_term=gst-rtsp-server&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-78507145.nonecase&spm=1018.2226.3001.4187

https://blog.csdn.net/ZhangLH66/article/details/114695073?ops_request_misc=&request_id=&biz_id=102&utm_term=gst-rtsp-server&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-114695073.nonecase&spm=1018.2226.3001.4187

http://blog.chinaunix.net/uid-21501855-id-5846723.html

本人对Gstreamer和推流这些内容不太了解,如有谬误,还请指正。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值