【GStreamer开发】GStreamer基础教程16——平台相关的element
目标
虽然GStreamer是跨平台的framework,但不是所有的element都是在所有平台下都有的。比如,音频和视频的sink都非常依赖于当前的window系统,根据当前的平台需要选择不同的element。当然,你在运行playbin2或者autovideosink这些element时不需要考虑跨平台的问题,但是,当你使用仅仅在特定的平台存在的sink时,这个问题就绕不过去了。本教程会介绍这些element的一些特性。
ximagesink
标准的基于X系统的视频sink。它实现了XOverlay接口,所以视频窗口可以嵌入其他窗口。它不支持视频缩放,需要实现这个功能必须使用其他的方法(比如videoscale element)。
xvimagesink
一个基于X系统的视频sink,使用了XVideo_Extension(Xv)方法。它实现了XOverlay接口,所以视频窗口可以嵌入其他窗口。它支持在GPU上进行高效的视频缩放。它仅在硬件和驱动支持Xv扩充的情况下才可以使用。
cluttersink
这个Gstreamer视频sink会给ClutterTexture发送数据用来显示。Clutter是一个跨平台的库,所以每个平台都可以使用这个sink。Clutter通过使用OpenGL作为后台渲染的方法来获得平台无关性,所以必须保证系统支持OpenGL。
alsasink
这个音频sink会通过ALSA来输出到声卡。这个sink在几乎所有的linux平台上都有。它通常被看做声卡底层的接口,同时配置起来比较复杂。
plusesink
这个sink在一个PulseAudio服务器上播放声音。它是比ALSA更高层级的抽象,而且使用更加方便并且提供更多地一些高级功能。但是,在一些旧的linux系统上不够稳定。
Mac OS X
osxvideosink
这是在Mac OSX系统上唯一提供的视频sink。
cluttersink
这个Gstreamer视频sink会给ClutterTexture发送数据用来显示。Clutter是一个跨平台的库,所以每个平台都可以使用这个sink。Clutter通过使用OpenGL作为后台渲染的方法来获得平台无关性,所以必须保证系统支持OpenGL。
osxaudiosink
这是在Mac OSX系统上唯一提供的音频sink。
Windows
directdrawsink
这是Windows下最老的基于DirectDraw的视频sink。它仅需要DirectX7,所以在目前几乎所有的Windows平台上都支持。
dshowvideosink
这是基于DirectShow的一个视频sink。它可以使用不同的后端做渲染,比如EVR,VMR9或VMR7。它支持视频图像尺寸调节并且可以过滤调节过得图像来避免混淆。它实现了XOverlay的接口,所以视频窗口可以嵌入其他窗口中。
d3dvideosink
这是最新的基于Direct3D的视频sink。它支持视频图像尺寸调节并且可以过滤调节过得图像来避免混淆。它实现了XOverlay的接口,所以视频窗口可以嵌入其他窗口中。
cluttersink
这个Gstreamer视频sink会给ClutterTexture发送数据用来显示。Clutter是一个跨平台的库,所以每个平台都可以使用这个sink。Clutter通过使用OpenGL作为后台渲染的方法来获得平台无关性,所以必须保证系统支持OpenGL。
directsoundsink
这是Windows默认的音频sink,基于所有Windows版本都支持的DirectSound。
dshowdecwrapper
DirectShow是类似于GStreamer的一个多媒体框架。但它们也有很多的不同,pipeline是不能相互连接的。但是,通过这个element,GStreamer就可以使用DirectShow的解码element的输出了。dshowdecwrapper可以包装多个DirectShow的解码器,然后放进GStreamer的pipeline。
eglglessink
这个视频sink是基于OpenGLES和EGL的。它支持视频图像尺寸调节并且可以过滤调节过得图像来避免混淆。它实现了XOverlay的接口,所以视频窗口可以嵌入其他窗口中。
openslessink
这是GStreamer在Android平台上唯一的音频sink,它基于OpenSL ES。
androidmedia
android.media.MediaCodec是一个支持在设备侧编解码包括硬件编解码的一个Android上的API。它在JellyBean之后就可以用了,GStreamer可以通过androidmedia插件来用这个API做音频和视频的解码。
eglglessink
这个视频sink是基于OpenGLES和EGL的。它支持视频图像尺寸调节并且可以过滤调节过得图像来避免混淆。它实现了XOverlay的接口,所以视频窗口可以嵌入其他窗口中。
osxaudiosink
这是iOS上唯一支持的音频sink。
iosassertsrc
读取iOS设备上内容(比如:照片,音乐,录像等等)的source element。当你使用playbin2并且URI使用assets-library://这个格式的时候会用到这个element。
iosavassetsrc
读取iOS设备上音视频内容(比如:照片,音乐,录像等等)的source element。当你使用playbin2并且URI使用ipod-library://这个格式的时候会用到这个element。这里的解码是针对系统优化过的。
【GStreamer开发】GStreamer基础教程16——平台相关的element的更多相关文章
- Android程序开发0基础教程(一)
程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操 ...
- Python基础:获取平台相关信息
Windows 10家庭中文版,Python 3.6.4, 本文介绍了使用os.platform.sys三个模块获取Python程序的运行平台相关的信息. os模块:提供 各种各样的操作系统接口 os ...
- 4412开发板Android教程——Android平台简介
本文转自迅为开发板论坛:http://www.topeetboard.com Android和IOS Android的历史 Android公司 2005年Google收购成立22个月的Android公 ...
- Java基础教程(16)--注解
一.注解基础知识 1.注解的格式 最简单的注解就像下面这样: @Entity @符号指示编译器其后面的内容是注解.在下面的例子中,注解的名称为Override: @Override void ...
- iOS开发零基础教程之生成git所需的SSH keys
在我们github看到了一个不错的第三方库时,可能我们想把他git clone到本地,我们需要复制他的SSH URL,如下图: 复制完地址之后,我们需要打开终端,然后输入命令: git clone + ...
- Ruby 基础教程1-6
1.循环实现方法 循环语句 (while;for; loop,until) 循环方法(times,each) 2.for for 变量 in 对象 主体 ...
- Chrome扩展开发基础教程(附HelloWorld)
1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...
- Java基础教程(18)--继承
一.继承的概念 继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...
- 【GStreamer开发】GStreamer基础教程10——GStreamer工具
目标 GStreamer提供了一系列方便使用的工具.这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline--完全不使用C 如何找出一个element的Capab ...
随机推荐
- Intel 80386 CPU
一.80386 概述 80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC相容机中.这些PC机称为「80386电脑」或「386电脑」,有时也简称「80386」或「386」.80 ...
- POJ 1927 Area in Triangle
Area in Triangle Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1674 Accepted: 821 D ...
- Kindle Touch 修砖手札
首先是网上的修砖教程: 最近有多人反映按照修砖程序走过后依然板砖,和碎平联系和WA沟通后对帖子作新的修改. 新教程直接使用5.1.2的镜像,特别说明. 特别感谢kn007的专业指导 小白帖子现为简化过 ...
- 创建一个简单tcp服务器需要的流程
1.socket创建一个套接字 2.bind绑定ip和port 3.listen使套接字变为可以被动链接 4.accept等待客户端的链接 5.recv/send接收发送数据
- [CF 718C] Sasha and Array
传送门 Solution 用线段树维护矩阵 第一个操作相当于区间乘 第二个操作相当于区间求和 Code #include<bits/stdc++.h> #define ll long l ...
- 2019UNCTF竞技赛部分writeup
Reverse unctf_babyre2 这题flag分为两部分,第一部分每四个字符一组打包成int后,每次把四个int传入函数,后三个参数异或后先以每位为索引查表,将新数据进行循环移位.异或,将结 ...
- fdconnection自动重连
fdconnection自动重连 1)设置 FDConnection1.ResourceOptions.AutoReconnect := True; 控制自动连接的恢复. 使用AutoReconnec ...
- pythonw.exe不能用
其实可以直接执行python目录下的Lib/idlelib/idle.bat即可,对于非安装版的python来说开始菜单是找不到启动快捷方式的.
- HearthBuddy的class276以及class247
使用de4dot-cex反编译原版的hearthbuddy得到的 链接: https://pan.baidu.com/s/1hT79LpIjbyvODsjnkSe_5A 提取码: iemx class ...
- Java 从入门到进阶之路(十六)
在之前的文章我们介绍了一下 Java 中类的多态,本章我们来看一下 Java 中类的内部类. 在 Java 中,内部类分为成员内部类和匿名内部类. 我们先来看一下成员内部类: 1.类中套类,外面的叫外 ...