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

Joh*_*n U 17 video streaming vlc rtsp gstreamer

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

工作的管道是:

gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc_mpeg4 bitrate=800000 ! ffmux_mp4 ! filesink location=video_test.mp4
Run Code Online (Sandbox Code Playgroud)

下一步是修改管道以通过网络流式传输测试卡,使用类似rtsp:// ip_addr:port/streamname的内容在具有VLC的PC上查看,但是关于如何做到这一点的文档看起来很薄(并且经常过时),这些示例似乎模糊了源代码和命令行方式.

我会很自然地承认,> 50%的问题是我们对Gstreamer及其各个部分缺乏了解,我总是发现,如果我有一个可行的例子,我可以用棍子戳它并解决其余的问题.从那里.

我到目前为止:

gst-launch -v videotestsrc ! queue ! ffenc_mpeg4 bitrate=800000 ! rtpmp4vpay ! tcpserversink host=<PC_ip> port=5000
Run Code Online (Sandbox Code Playgroud)

这似乎在VLC中发生了一些事情(使用tcp:// board_ip:port) - 它似乎认为发生了一些事情(不会抛出错误)但不会播放/显示任何内容.当我打破(^ C)gst进程时,VLC会注意到.

所以,基本上 - 任何指导/反馈都会很棒,一个有效的单线工作会很棒.

编辑添加:是的我看到了test_video.c的例子,但那是在编译一个特殊的程序来做一些事情看起来应该可以从命令行调用来证明这个概念.

* = Linux version 2.6.32-17-ridgerun /CPU: ARM926EJ-S
Run Code Online (Sandbox Code Playgroud)

Tik*_*ik0 23

来源:与RTP相反,RTSP服务器按需协商RTP服务器和客户端之间的连接(链路).该GST-RTSP服务器是不是GStreamer的插件,但它可以被用来实现自己的RTSP应用程序库.以下测试用例适用于Ubuntu 12.04.5机器:

  • Preliminars
    • 安装gstreamer-1.0与base/good/ugly/bad插件
    • 安装autoconf automake autopoint libtool和其他缺少必要的构建工具
  • 构建gst-rtsp-server
    • git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server && cd gst-rtsp-server
    • 我们使用gstreamer 1.2: git checkout remotes/origin/1.2
    • 构建:( ./autogen.sh --noconfigure && GST_PLUGINS_GOOD_DIR=$(pkg-config --variable=pluginsdir gstreamer-plugins-bad-1.0) ./configure && make由于某种原因,pkg-config不设置GST_PLUGINS_GOOD_DIR,所以我们明确设置它)
  • 测试运行
    • 运行测试应用程序 cd examples && ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"
    • 现在可以通过以下地址远程访问流(例如,使用VLC): rtsp://HOST_IP:8554/test


Joh*_*n U 3

终于在这里找到了一个工作示例:

GStreamer rtp流转vlc

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