gstreamer 常用element

一、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仅仅把输入数据不加修改的传过来。它也有一些有用的调试函数,例如偏移量和时间戳检测,或者丢弃缓冲。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章