GST Framework
GST工作模型
Elements可以分为Source, Sink 以及中间级的Filter和Codecs,Elements之间通过传递buffer以及消息来实现具体的业务逻辑,source elements生产buffer,sink elements消费buffer.
多个Elements通过pads首尾相连,可以构成一个Bin,从外部看,Bin可以看成一个更复杂的Elements,通常情况下,多个业务联系紧密的Elements可以构成一个Bin单元,通过Bin再向上提供新的功能。
包含源组件和汇组件的Bin可以构成pipeline,基于pipeline可以构建基于Gstreamer的应用程序。
1.apt-get安装
apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
安装过程如下:
安装结束后,gstreamer的开发环境就建好了,我们没有从源码开始编译,所以没有遇到什么问题。安装的文件包括gstreamer库以及一些可执行文件的用例,通过这些用例用户可以简单对gstreamer进行测试。
测试片源播放,以MKV容器格式的文件为例,用gst-play搭建播放管道:
gst-play-1.0 /media/caozilong/ntfs/The.Godfather.Part2.Blu-ray.720p.x264.DD51-HiS@MySiLU.mkv
基于gstreamer SDK做二次开发:
上面提到,通过命令行安装方式获得的gst sdk 除了包含类似于gst-play 这种开箱即用的程序之外,还包括释放了一大堆的运行库,供客户二次开发使用。
下面的命令可以查看GCC链接阶段引用的GST库有那些:
pkg-config --cflags --libs gstreamer-1.0
可以看到,客户二次开发需要引用到的和GST有关的库还真不少。
下面基于安装好的GST SDK环境开发一个简单的用户程序:
GST官网提供了教程程序,不用我们手搓代码,教程在GIT仓库中被管理,下载下来;
git clone https://gitlab.freedesktop.org/gstreamer/gst-docs
官网文档地址如下: