一、bin,这些bin在内部包含了element,但是在外部还是把它看做一个element。
1、playbin:它会处理播放器从source经过解复用、解码到显示的过程,同时它也非常灵活,有很多的设置项。
2、uridecodebin:从一个uri获取数据,然后解码成原始数据。
二、文件输入和输出
1、filesrc:读取一个本地文件然后用caps输出媒体数据
2、filesink:这个element把所有收到的媒体数据存成文件,用location来指定文件名
gst-launch-1.0 audiotestsrc ! vorbisenc ! oggmux ! filesink location=test.ogg
三、network
1、souphttpsrc:这个element作为客户端,使用soup库经由http来接受数据
C:\Users\lenovo>gst-launch-1.0 souphttpsrc location=http://192.168.31.254/vod/ts/E6FBEADEEFA1F64C30DA5AE2FA98CF89.ts ! decodebin ! autovideosink
四、测试element,这些element在测试pipeline是否工作时非常有用,可以取代数据源。
1、videotestsrc:生成固定的video输出,用于测试视频pipeline
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
2、audiotestsrc:生成固定的audio信号,用于测试音频pipeline
gst-launch-1.0 audiotestsrc ! audioconvert ! autoaudiosink
五、视频适配
1、videoconvert:会把一个色彩空间转换为另一个比如RGB转换为YUV,也可以转换不同的RGB和不同的YUV。
2、videorate:
这个element接受带时间戳的视频数据转换成匹配source pad帧率的流。通过丢弃或者复制帧来执行改正,而不是通过古怪的算法。
这个在连接不同帧率的element时很有用。正如其他的适配插件,如果不需要的话会直通过去(上下游element能匹配上)。
如果实际帧率未知的情况下,为了以防万一,使用这个element是个不错的主意。
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! videorate ! video/x-raw,framerate=1/1 ! videoconvert ! autovideosink
3、videoscale:
这个element可以修改视频帧的尺寸。这个element会先检查不修改视频尺寸是否可行,如果可行,就不在进行尺寸的转换。所以在pipeline中加入这个element是安全的,可以提高鲁棒性。
六、音频适配
1、audioconvert:转换原始不同音频格式之间的缓冲,支持浮点数/整数以及声道转换。
2、audiorasample:可以解决采样率问题。
3、audiorate:这个element接受带时间戳的音频帧,然后通过增加或者降低采样来获得一个标准流。它不能修改采样率,只能通过移除重叠部分和填充空白部分来获得连续“干净”的输出。
七、多线程
1、queue:
一个queue执行两个任务:
(1)把数据放到队列里,知道满为止,此时任何想要推送数据的线程将会被阻塞直到有新的空间。
(2)给source pad创建一个新的线程,这样就能分离对sink和source pads的处理。
在queue满或者空的时候会出发信号,可以丢弃一些缓冲数据,必满阻塞
2、queue2:queue2不是queue的进化版,他们有着同样的设计目标,只是实现方法不一样。
当涉及到网络缓冲的时候,使用queue2而不是queue
3、multiqueue:这个element可以对多个流同时提供queue,并且简化对流的管理。此外,它可以同步不同的流,确保任何一个流都不会运行的特别快。 这是一个先进的element。decodebin2里面包含着这个element,你在一个通常的播放应用里面很少会直接使用。
4、tee:把数据分成多份,比如可以同时在屏幕上播放图像并且把文件保存到本地。
八、capabilities
1、capsfilter:实现caps过滤,这个element不会修改数据,但会修改数据的类型。
2、typefind:这个element包含了流的类型。
九、debugging
1、fakesink:这个sink element仅仅简单的抛弃所有输入的数据。
2、identify: 这是一个哑巴element仅仅把输入数据不加修改的传过来。它也有一些有用的调试函数,例如偏移量和时间戳检测,或者丢弃缓冲。