gstreamer框架下的基本概念
bin:首先它是一个元件,可以和元件一样控制;另外它是个容器,可以把多个元件添加入这个容器,组成功能更强大的元件。在gstreamer中,有个功能十分强大的bin:playbin2,你可以非常简单的利用它实现一个简单的播放器。从中,你既可以看到bin的威力,也可以看到bin的使用并没有什么太多的不同。
pipeline:它是一个完整的媒体流水线。用来完成我们预想的媒体处理。
communication: 通信,主要涉及四个概念:
- buffer:它是元件之间传递的数据流,通常都downstream;
- events:它是元件之间或者元件与应用之间传递信息的手段。传递方向既可以是upstream也可以是downstream;
- message:这是元件通过bus向应用传递消息的手段。
- queries:应用查询pipeline信息的手段。
从应用上分,communication可以分为三种:
- 数据传输:传递媒流体数据,元数据等;
- 状态信息:如:EOS(结束状态)、Error、position info等等;
- 控制信息:seek、pause等等;
bus: 是一个用于照看pipeline运行的线程,当pipeline需要向应用传递message时,不需要用户编写特别的代码,bus就能完成这个任务。对于用户来说只需要设置一个根据不同message进行不同控制的处理函数即可。