GStreamer——教程——基础教程16:Platform-specific elements

基础教程16:特定平台元素

目标

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

跨平台

glimagesink

这个视频接收器是基于 OpenGLOpenGL ES。它支持对缩放后的图像进行重新调整和过滤以减轻锯齿现象。它实现了VideoOverlay接口,因此可以将视频窗口重新设置为其他窗口(嵌入在其他窗口中)。除了Windows之外,它是大多数平台上推荐的视频接收器(在Windows上,推荐使用d3d11videosink)。特别是在Android和iOS上,它是唯一的可用视频接收器。它可以分解为glupload ! glcolorconvert ! glimagesinkelement以将进一步的OpenGL硬件加速处理插入到管道中。

Linux

ximagesink

这是一个基于X的RGB标准视频接收器。它实现了VideoOverlay接口,因此可以将视频窗口重新设置为其他窗口(嵌入在其他窗口中)。除了RGB之外,它不支持缩放或颜色格式;必须通过不同的方式(例如使用videoscale元素)进行操作。

xvimagesink

基于X的视频接收器,使用X视频扩展(Xv)。它实现了VideoOverlay接口,因此可以将视频窗口重新设置为其他窗口(嵌入在其他窗口中)。它可以在GPU上高效地进行缩放。只有硬件和相应的驱动程序支持Xv扩展时,它才可用。

alsasink

此音频接收器通过 ALSA(Advanced Linux Sound Architecture)输出到声卡。此接收器几乎在所有Linux平台上都可用。它通常被视为对声卡的“低级”接口,并且可能难以配置(请参阅评论 播放教程9:数字音频直通)。

pulsesink

此接收器将音频播放到PulseAudio 服务器。与ALSA相比,它是声卡的更高级别的抽象,因此更易于使用并提供更高级的功能。尽管在某些较旧的Linux发行版上已知它会不稳定。

Mac OS X

osxvideosink

这是GStreamer在Mac OS X上可用的视频接收器。还可以使用OpenGL和glimagesink进行绘制。

osxaudiosink

这是GStreamer在Mac OS X上唯一的音频接收器。

Windows

d3d11videosink

此视频接收器基于Direct3D11 ,是Windows上的推荐元素。它支持VideoOverlay接口和零拷贝的方式的调整/颜色空间转换。这是Windows上性能最高且功能最丰富的视频接收器元素。

d3dvideosink

这个视频接收器是基于 Direct3D9。 它支持缩放和过滤以减轻锯齿现象的缩放图像。它实现了VideoOverlay接口,因此可以将视频窗口重新设置为其他窗口(嵌入在其他窗口中)。对于目标为Windows 8或更高版本的应用程序,不建议使用此元素。

dshowvideosink (deprecated)

此视频接收器基于Direct Show。它可以使用不同的 渲染后端,例如 EVR, VMR9 或者 VMR7, 其中EVR仅在Windows Vista或更高版本中可用。它支持缩放和过滤以减轻锯齿现象的缩放图像。它实现了VideoOverlay接口,因此可以将视频窗口重新设置为其他窗口(嵌入在其他窗口中)。大多数情况下不建议使用此元素。

wasapisinkwasapi2sink 

这些元素是基于 WASAPI的默认音频接收器元素,在Vista或更高版本上可用。请注意,wasapi2sink是wasapisink的替代品,并且wasapi2sink是Windows 8或更高版本的默认音频接收器元素。否则,wasapisink将是默认音频接收器元素。

directsoundsink (deprecated)

此音频接收器元素基于 DirectSound,可在 所有Windows版本。

dshowdecwrapper

Direct Show 是一个与GStreamer类似的多媒体框架。尽管它们之间有很大的不同,但它们的管道无法互连。但是,通过此元素,GStreamer可以从Direct Show中的解码器中受益。dshowdecwrapper包装了多个Direct Show解码器,以便它们可以嵌入GStreamer管道中。使用gst-inspect-1.0工具(参见基本教程10:GStreamer工具) 可用的解码器。

Android

openslessink

这是GStreamer在Android上唯一的音频接收器。它基于OpenSL ES。
OpenSL ES

openslessrc

这是Android上GStreamer唯一可用的音频源。它是 基于OpenSL ES

androidmedia

android.media. MediaCodec 是用于访问可用编解码器的Android特定API 设备,包括硬件编解码器。它从API级别开始可用 16(JellyBean)和GStreamer可以通过androidmedia插件使用它 用于音频和视频解码。在Android上,连接硬件 解码器对glimagesink元件可以产生高性能 零拷贝解码带管道。

ahcsrc

此视频源可以从Android设备上的摄像头捕获,它是一部分 的androidmedia插件,并使用android.hardware.CameraAPI

iOS

osxaudiosink

这是GStreamer在iOS上唯一可用的音频接收器。

iosassetsrc

用于读取iOS资源的源元素,即存储在库中的文档(如照片、音乐和视频)。当URI使用assets-library://方案时,它可以由playbin自动实例化。

iosavassetsrc

用于读取和解码iOS音视频资源的源元素,即存储在库中的文档(如照片、音乐和视频)。当URI使用ipod-library://方案时,它可以由playbin自动实例化。解码由系统执行,因此如果可用,将使用专用硬件。

结论

本教程展示了一些特定于平台的GStreamer元素的细节,这些元素并非在所有平台上都可用。在使用像playbin或autovideosink这样的跨平台元素时,您不必担心它们,但如果手动实例化它们,了解它们的个人特性是有好处的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值