英伟达TX2环境GStreamer通过RTSP实现从IP网络摄像机拉流

验证用IP摄像头有3个,刚开始没图像输出,后来多试几次,就正常了:
摄像头一(演示正常):
gst-launch-1.0 playbin uri=rtsp://admin:XFchipeak@192.168.1.64/34020000001320000001

root@nvidia-desktop:/media/012-gst-docs# gst-launch-1.0 playbin uri=rtsp://admin:XFchipeak@192.168.1.64/34020000001320000001
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://admin:XFchipeak@192.168.1.64/34020000001320000001
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

摄像头二(演示正常):
gst-launch-1.0 playbin uri=rtsp://admin:HuaWei123@192.168.1.65/LiveMedia/ch1/Media1

root@nvidia-desktop:/media/012-gst-docs# gst-launch-1.0 playbin uri=rtsp://admin:HuaWei123@192.168.1.65/LiveMedia/ch1/Media1
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://admin:HuaWei123@192.168.1.65/LiveMedia/ch1/Media1
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (request) SETUP stream 2
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Missing element: VND.ONVIF.METADATA RTP depayloader
WARNING: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'application/x-rtp, media=(string)application, payload=(int)107, clock-rate=(int)90000, encoding-name=(string)VND.ONVIF.METADATA, a-recvonly=(string)"", npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, ssrc=(uint)2676502632'.
Additional debug info:
gsturidecodebin.c(921): unknown_type_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 279
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 279

** (gst-launch-1.0:26660): CRITICAL **: 16:43:29.016: file gstaudioringbuffer.c: line 2045 (gst_audio_ring_buffer_set_channel_positions): should not be reached
Redistribute latency...

摄像头三(演示正常):
gst-launch-1.0 playbin uri=rtsp://admin:XFchipeak@192.168.1.48/34020000001320000001

root@nvidia-desktop:/media/012-gst-docs# gst-launch-1.0 playbin uri=rtsp://admin:XFchipeak@192.168.1.48/34020000001320000001
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://admin:XFchipeak@192.168.1.48/34020000001320000001
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

** (gst-launch-1.0:26717): CRITICAL **: 16:44:36.211: file gstaudioringbuffer.c: line 2045 (gst_audio_ring_buffer_set_channel_positions): should not be reached
Redistribute latency...

程序实现:
1,基础源码:Basic tutorial 1: Hello world!

2,源码更换视频源:

#include <gst/gst.h>

int
main (int argc, char *argv[])
{
  GstElement *pipeline;
  GstBus *bus;
  GstMessage *msg;

  /* Initialize GStreamer */
  gst_init (&argc, &argv);

  /* Build the pipeline */

/*  
  //视频源1(默认)
  pipeline =
      gst_parse_launch
      ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
      NULL);
*/      
/*
  //视频源2(IP摄像头)
  pipeline =
      gst_parse_launch
      ("playbin uri=rtsp://admin:XFchipeak@192.168.1.64/34020000001320000001",
      NULL);
*/

///*
  //视频源3(IP摄像头)
  pipeline =
      gst_parse_launch
      ("playbin uri=rtsp://admin:HuaWei123@192.168.1.65/LiveMedia/ch1/Media1",
      NULL);
//*/
/*

  //视频源4(IP摄像头)
  pipeline =
      gst_parse_launch
      ("playbin uri=rtsp://admin:XFchipeak@192.168.1.48/34020000001320000001",
      NULL);      
*/      

  /* Start playing */
  gst_element_set_state (pipeline, GST_STATE_PLAYING);

  /* Wait until error or EOS */
  bus = gst_element_get_bus (pipeline);
  msg =
      gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
      GST_MESSAGE_ERROR | GST_MESSAGE_EOS);

  /* Free resources */
  if (msg != NULL)
    gst_message_unref (msg);
  gst_object_unref (bus);
  gst_element_set_state (pipeline, GST_STATE_NULL);
  gst_object_unref (pipeline);
  return 0;
}

3,编译 + 执行:

root@nvidia-desktop:/media/012-gst-docs/gst-docs/examples/tutorials# gcc basic-tutorial-1.c -o basic-tutorial-1 `pkg-config --cflags --libs gstreamer-1.0`
root@nvidia-desktop:/media/012-gst-docs/gst-docs/examples/tutorials# ./basic-tutorial-1
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

以上本人亲自验证正常(验证更多截图不方便上传),谢谢!

(完)

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值