0. 目标
本教程提供了一个值得了解的方便的 GStreamer 元素列表。它们的范围从允许您轻松构建复杂管道的强大的一体式元素(如 playbin)到在调试时非常有用的小助手元素。
为了简单起见,下面的例子是使用 gst-launch-1.0 工具给出的(在《基础教程10: GStreamer工具》中了解它)。如果要查看正在协商的焊盘封口,请使用-v命令行参数。
1. Bins
Bin 的英文原意是箱子的意思,在 GStreamer 中表示若干元素的集合。利用多个元素组合在一起,可以完成一件复杂的任务。GStreamer 提供了若干 Bin,用于简化程序设计。
注意,在 GStreamer 体系中,Bin 本身也是元素 (element)。这就很有意思了,这意味着我们可以把一个复杂的 Bin 按照树形结构分解成若干层级。从工程学的角度来看,这是非常有用的。
playbin
playbin 非常有用,可以说 GStreamer 的整部教程都是围绕着与他相关的内容展开,它涵盖了从媒体流的数据源到媒体的显示展现,包括了媒体流格式解析和数据解码。有关详细信息,请参见《播放教程》。
uridecodebin
uridecodebin 可以把媒体流中的数据通过解码运算还原为原始数据。我们知道,一个完整的媒体流管道包括 source、filter 和 sink 三种类型的元素。uridecodebin 可以根据 URI 媒体流的具体格式选择一个合适的 source 元素,并把这个 source 元素连接到一个负责解码的 decodebin 元素。它的行为就像一个多路信号分离器,可以从尽可能多的 source pad 以便从适配媒体流中各种各样的媒体数据。
gst-launch-1.0 uridecodebin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! videoconvert ! autovideosink
decodebin
该元件通过自动插入,使用可用的解码器和解复用器自动构建解码管道,直到获得原始媒体。它由 uridecodebin 在内部使用,uridecodebin 通常使用起来更方便,因为它还创建了一个合适的源元素。它将替换旧的 decodebin 元素。它的行为就像一个多路信号分离器,所以它提供了尽可能多的source pad 以便匹配媒体流中的媒体数据。
gst-launch-1.0 souphttpsrc location=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! decodebin ! autovideosink
2. 文件输入/输出
filesrc
此元素读取本地文件并生成具有 ANY Caps (能力) 的媒体。如果要为媒体获取正确的 Caps,请使用typefind 元素或将 filesrc 的 typefind 属性设置为 TRUE 来浏览流。
gst-launch-1.0 filesrc location=f:\\media\\sintel\\sintel_trailer-480p.webm

本文介绍了GStreamer中的一些关键元素,包括Bins如playbin和uridecodebin,用于文件输入/输出的filesrc和filesink,网络元素souphttpsrc,生成测试媒体的videotestsrc和audiotestsrc,视频和音频适配器如videoconvert和audioconvert,多线程元素如queue和multiqueue,以及调试工具fakesink和identity。这些元素在日常GStreamer工作流程中非常实用,既有生产用途也有调试价值。
最低0.47元/天 解锁文章
374





