Video 使用Gstreamer服务RTSP流,寻找工作示例

Video 使用Gstreamer服务RTSP流,寻找工作示例,video,streaming,gstreamer,rtsp,vlc,Video,Streaming,Gstreamer,Rtsp,Vlc,我们正试图让Gstreamer在DM368 Leopardboard*上工作,我们已成功说服它创建测试视频(videotestsrc),对其进行编码,并将其转储到文件中 工作的管道是: gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc_mpeg4 bitrate=800000 ! ffmux_mp4 ! filesink location=video_test.mp4 下一步是修改管道,使测试卡通过网络传输,以便在带有VLC的

我们正试图让Gstreamer在DM368 Leopardboard*上工作,我们已成功说服它创建测试视频(videotestsrc),对其进行编码,并将其转储到文件中

工作的管道是:

gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc_mpeg4 bitrate=800000 ! ffmux_mp4 ! filesink location=video_test.mp4
下一步是修改管道,使测试卡通过网络传输,以便在带有VLC的PC上使用rtsp://ip_addr:port/streamname但是关于如何做到这一点的文档似乎非常缺乏(而且往往已经过时),这些例子似乎模糊了源代码和命令行的实现方式

我坦率地承认,50%以上的问题是我们对Gstreamer及其各个部分不熟悉,我总是发现如果我有一个工作示例,我可以用棍子戳它,然后从那里解决其余的问题

我已经做到了这一点:

gst-launch -v videotestsrc ! queue ! ffenc_mpeg4 bitrate=800000 ! rtpmp4vpay ! tcpserversink host=<PC_ip> port=5000

最后在这里找到了一个工作示例:

但它确实需要为VLC创建一个.SDP文件并指定IP地址,而这并不是我们想要的结果。。。但是,嘿,这是一个开始

: 与RTP相反,RTSP服务器协商RTP服务器和按需客户端之间的连接()。不是一个gstreamer插件,而是一个库,可用于实现您自己的RTSP应用程序。以下测试用例应用于Ubuntu 12.04.5机器:

  • 预备
    • 使用基本/良好/丑陋/不良插件安装gstreamer-1.0
    • 安装
      autoconf automake autopoint libtool
      和其他缺少的基本构建工具
  • 构建gst rtsp服务器
    • git克隆git://anongit.freedesktop.org/gstreamer/gst-rtsp-server &&cd gst rtsp服务器
    • 我们使用gstreamer1.2:
      git签出遥控器/origin/1.2
    • Build:
      /autogen.sh--noconfigure&&GST\u PLUGINS\u GOOD\u DIR=$(pkg config--variable=pluginsdir gstreamer-PLUGINS-bad-1.0)。/configure&&make
      (由于某些原因,pkg config没有设置GST\u PLUGINS\u GOOD\u DIR,因此我们显式设置它)
  • 试运行
    • 运行测试应用程序:
      cd示例&&./testlaunch“(videotestsrc!x264enc!rtph264pay name=pay0 pt=96)”
    • 现在可以通过地址:
      rtsp://HOST_IP:8554/test

在流程结束时,我遇到了一个问题,比如:

  • 配置:未找到包“gstreamer-1.0”
  • 配置:错误:未找到gstreamer-1.0>=1.2.3(gstreamer)
我在这篇文章中找到了解决方案:


而且它工作得很好

这里有一个c示例似乎可以做到这一点,但并没有真正解释如何使用它:gst rtsp server有一个测试启动示例,您可以指定编码管道。服务器代码非常小,因为它使用了gstreamer的大部分rtsp实现。是的,我正在查看gst示例代码,但在我看来,应该有某种方法从命令行调用gstreamer来流式传输视频,以证明它是可能的和有效的。但是rtsp服务器使用什么插件(元素)?它使用udpsink吗?你能把一个答案标记为正确吗?这是一个好的开始,但我看到的主要问题是你的最后一个要点”rtsp://HOST_IP:8554/test实际上是在“test launch.c”到127.0.0.1中硬编码的,所以它不绑定任何外部暴露的内容。不,一点也不。只需将
HOST\u IP
替换为运行应用程序的PC的IP或域名
test launch.c
。然后从远程PC上运行一个像VLC这样的应用程序,瞧,你会看到你的测试源。上面的测试启动非常有效,我可以在VLC播放器上玩。现在我想输入一个编码的网络直播流。如何更改输入源?对我来说,“test-mp4”运行良好,它位于示例文件夹中。请注意,它不会提供任何控制台输出-只需继续并在以下位置进行测试:rtsp://HOST_IP:8554/testRather 然后链接到外部解决方案,请在回答中总结相关部分。
* = Linux version 2.6.32-17-ridgerun /CPU: ARM926EJ-S