GStreamer基础教程之特定平台的元素

目标

尽管 GStreamer 是一个多平台框架,但并非所有元素都适用于所有平台。例如,视频接收器严重依赖底层窗口系统,需要根据平台选择不同的接收器。在使用playbin或 等 元素时,您通常不需要担心这一点在使用元素像playbin或autovideosink,但是,对于需要使用仅在特定平台上可用的接收器之一的情况,本教程会向您提示它们的一些特性。

跨平台

glimagesink

此视频接收器基于 OpenGLOpenGL 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://方案时 自动实例化。解码由系统执行,因此将使用专用硬件(如果可用)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值