GStreamer 元素依赖项:如何将 playbin 连接到 hlssink?

GStreamer 元素依赖项:如何将 playbin 连接到 hlssink?

我是 GStreamer 的新手,我一直在尝试使用 gst-launch-1.0 构建一些简单的管道。我很难弄清楚需要将哪些元素组合在一起。例如,我想将 webm 视频流式传输到浏览器内的 HTML5 视频标签。要打开和读取文件,我认为我需要使用 playbin:

gst-launch-1.0 playbin uri=file:///home/ubuntu/g-streamer-lively/skyrim.webm ...

然后为了使文件可用,我使用 hlssink:

! hlssink max-files=5  playlist-root=http://10.12.9.3/ location=/var/www/html/hlssink.webm

然后在我的浏览器中使用视频标签:

<video src="http://10.12.9.3/hlssink.webm" controls>

因此该管道将无法启动,并且我收到以下错误:

WARNING: erroneous pipeline: could not link playbin0 to hlssink0

所以它告诉我无法链接这两个元素。很好,但是我该在哪里查找需要包含在管道中的其他元素才能使其正常工作?

提前致谢。

答案1

我想你应该停下来读一下 gstreamer 文档来了解它的工作原理。GStreamer 是一个用于构建数据处理图表的框架。你可以在这里找到手册:http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

Playbin 是一个特殊元素(bin),它将为您组装内部管道。Playbin 不会暴露任何链接板,因为它旨在创建完整的播放管道,这就是为什么您无法将其链接到 hlssink。

您可以使用其他元素来创建管道,将您的 webm 输入转码为 hlssink,例如,您可以使用 uridecodebin,这是另一个 bin,它将自动为您使用的任何媒体创建解码管道(前提是您拥有正确的插件)。类似于:

gst-launch-1.0 uridecodebin uri=<youruri> name=decbin ! queue ! videoconvert ! x264enc ! tsmux name=muxer ! hlssink decbin. ! queue ! audioconvert ! faac ! muxer.

我还没有测试过,但是类似的东西应该可以将您的输入转换为使用 H264 和 AAC 的 mpegts,并传递 hlssink 的数据。

要检查系统中有哪些元素,请使用 gst-inspect-1.0 工具。如果您不提供参数,它将列出所有元素;如果您提供参数,它将提供有关特定元素的详细信息,例如:

gst-inspect-1.0 hlsssink

编辑:修复你在评论中提出的管道

gst-launch-1.0 uridecodebin uri=file:///home/ubuntu/g-streamer-lively/skyrim.webm name=decbin ! queue ! videoconvert ! x264enc ! mpegtsmux name=muxer ! hlssink max-files=5 playlist-root=10.12.9.3 location=/var/www/html/hlssink decbin. ! queue ! audioconvert ! avenc_aac ! muxer.

相关内容