目标
尽管 GStreamer 是一个多平台框架,但并非所有元素都适用于所有平台。例如,视频接收器严重依赖底层窗口系统,需要根据平台选择不同的接收器。在使用playbin
或 等 元素时,您通常不需要担心这一点在使用元素像playbin或autovideosink
,但是,对于需要使用仅在特定平台上可用的接收器之一的情况,本教程会向您提示它们的一些特性。
跨平台
glimagesink
此视频接收器基于 OpenGL或OpenGL ES。它支持缩放图像的重新缩放和过滤以减轻混叠。它实现了 VideoOverlay 接口,因此可以重新设置视频窗口的父级(嵌入到其他窗口中)。这是大多数平台上推荐的视频接收器。特别是在 Android 和 iOS 上,它是唯一可用的视频接收器。它可以分解为 glupload ! glcolorconvert ! glimagesinkelement来
将进一步OpenGL 硬件加速处理插入到管道中。
Linux
ximagesink
标准 RGB 仅基于 X 的视频接收器。它实现了 VideoOverlay 接口,因此可以重新设置视频窗口的父级(嵌入到其他窗口中)。它不支持除 RGB 之外的缩放或颜色格式;它必须通过不同的方式来执行(videoscale
例如使用 元素)。
xvimagesink
基于 X 的视频接收器,使用X 视频扩展(Xv)。它实现了 VideoOverlay 接口,因此可以重新设置视频窗口的父级(嵌入到其他窗口中)。它可以在 GPU 上有效地执行缩放。仅当硬件和相应的驱动程序支持 Xv 扩展时才可用。
alsasink
此音频接收器通过ALSA(高级 Linux 声音架构)输出到声卡 。这个接收器几乎在每个 Linux 平台上都可用。它通常被视为声卡的“低级”接口,配置起来可能很复杂(请参阅播放教程 9:数字音频直通的评论 )。
pulsesink
此接收器向PulseAudio 服务器播放音频。它是比 ALSA 更高级别的声卡抽象,因此更易于使用并提供更高级的功能。不过,众所周知,它在一些较旧的 Linux 发行版上不稳定。
Mac OS X
osxvideosink
这是 Mac OS X 上 GStreamer 可用的视频接收器。也可以glimagesink
使用 OpenGL进行绘制。
osxaudiosink
这是 Mac OS X 上 GStreamer 唯一可用的音频接收器。
Windows
directdrawsink
这是基于Direct Draw的最古老的 Windows 视频接收器。它需要 DirectX 7,因此几乎可以在当前所有的 Windows 平台上使用。它支持缩放图像的重新缩放和过滤以减轻混叠。
dshowvideosink
此视频接收器基于Direct Show。它可以使用不同的渲染后端,如 EVR、 VMR9 或 VMR7,EVR 仅在 Windows Vista 或更新版本上可用。它支持缩放图像的重新缩放和过滤以减轻混叠。它实现了 VideoOverlay 接口,因此可以重新设置视频窗口的父级(嵌入到其他窗口中)。
d3dvideosink
此视频接收器基于 Direct3D,是最新的 Windows 视频接收器。它支持缩放图像的重新缩放和过滤以减轻混叠。它实现了 VideoOverlay 接口,因此可以重新设置视频窗口的父级(嵌入到其他窗口中)。
directsoundsink
这是 Windows 的默认音频接收器,基于Direct Sound,可在所有 Windows 版本中使用。
dshowdecwrapper
Direct Show是一个类似于 GStreamer 的多媒体框架。但是,它们足够不同,因此它们的管道无法互连。但是,通过此元素,GStreamer 可以从 Direct Show 中存在的解码元素中受益。dshowdecwrapper
包装多个 Direct Show 解码器,以便它们可以嵌入到 GStreamer 管道中。使用该gst-inspect-1.0
工具(请参阅基础教程 10:GStreamer 工具)查看可用的解码器。
Android
openslessink
这是 Android 上 GStreamer 唯一可用的音频接收器。它基于OpenSL ES。
openslessrc
这是 Android 上 GStreamer 唯一可用的音频源。它基于OpenSL ES。
androidmedia
android.media.MediaCodec 是 Android 特定的 API,用于访问设备上可用的编解码器,包括硬件编解码器。它是可用的,因为 API 级别 16 (JellyBean) 和 GStreamer 可以通过 androidmedia 插件使用它来进行音频和视频解码。在 Android 上,将硬件解码器附加到glimagesink
元素可以产生高性能的零拷贝 decodebin 管道。
ahcsrc
此视频源可以从 Android 设备上的摄像头捕获,它是 androidmedia 插件的一部分,并使用android.hardware.Camera API。
IOS
osxaudiosink
这是 iOS 上 GStreamer 唯一可用的音频接收器。
iosassetsrc
用于读取 iOS 资产的源元素,即存储在库中的文档(如照片、音乐和视频)。它可以playbin
在 URI 使用该assets-library://
方案时 自动实例化。
iosavassetsrc
用于读取和解码 iOS 视听资产的源元素,即存储在库中的文档(如照片、音乐和视频)。它可以playbin
在 URI 使用该ipod-library://
方案时 自动实例化。解码由系统执行,因此将使用专用硬件(如果可用)。