24

我们正在尝试让 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 中发生了一些事情(使用tcp://board_ip:port) - 它似乎认为发生了一些事情(不会引发错误)但没有播放/显示任何内容。当我中断 (^C) gst 进程时,VLC 会注意到。

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

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

* = Linux version 2.6.32-17-ridgerun /CPU: ARM926EJ-S
4

3 回答 3

31

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

  • 预赛
    • 使用 base/good/ugly/bad 插件安装 gstreamer-1.0
    • 安装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
于 2016-10-25T09:37:12.953 回答
2

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

GStreamer rtp 流到 vlc

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

于 2012-12-07T17:37:45.707 回答
0

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

  • 配置:找不到包“gstreamer-1.0”
  • 配置:错误:找不到 gstreamer-1.0 >= 1.2.3 (GStreamer)

我在这篇文章中找到了解决方案:

https://askubuntu.com/questions/384059/error-compiling-a-package-configure-error-no-gstreamer-1-0-1-0-0

而且效果很好!!!

于 2017-05-20T11:50:38.510 回答