本文转自:http://blog.csdn.net/fei534358549/article/details/52304933
作者:Keith-Yang
1. 简介
GStreamer是一个开源的多媒体框架库。利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频(非线性编辑)的处理。
应用程序可以透明的利用解码和过滤技术。开发者可以使用简洁通用的接口来编写一个简单的插件来添加新的解码器或滤镜。目前,gstreamer已经可以应用在Linux、windows、macos、android、unix等多个平台上了,而且有全世界的开源工程师们在使用和维护。基于gstreamer的易用性,gstreamer得到了极大的推广。
2. 本文主讲内容
本文主要讲述目前应用在常用的linux桌面系统上的gstreamer插件,gstreamer目前在桌面系统上提供0.10和1.0两个版本,本文讲解0.10版本和1.0。
其中,0.10版本插件有以下几个:
1) gstreamer-0.10,这个是基本框架,目前系统中都提供了gstreamer-1.0,而且0.10版本目前已经不再更新维护了,但是稳定可靠,包含pipeline、bin等最基础的pipeline。
2) gstreamer-plugins-base-0.10,这个是基础插件库,包含用于编写元素的辅助库、基类、视频和音频解码器、编码器和过滤器,例如enc、mux和demux。
3) gstreamer-plugins-bad-0.10,主要提供了一些测试组件。
4) gstreamer-plugins-good-0.10,提供了常用组件,例如去隔行的deinterlace。
5) gstreamer-plugins-ugly-0.10,最牛的是提供的x264编解码器。
6) gstreamer-ffmpeg-0.10,基于ffmpeg提供的gstreamer支持库,非常的丰富,各种编解码器,混合器,最常用ffmpegcolorspace。
1.0版本插件跟0.10版本插件基本一致,但是内部框架已经大大不同。0.10版本的gstreamer插件目前已经不再更新了,所以以后重心需要转移到gstreamer1.0上。
3. gstreamer常用命令和组件
gstreamer提供几个最常用命令,gst-inspect、gst-launch
1) gst-inspect:gstreamer组件探测命令,由于gstreamer是注册形式的,当新安装了gstreamer插件后,可以使用gst-inspect命令来探测新加入的pipeline。gst-inspect后面加上pipeline组件名,可以查看该组件详细信息,例如:gst-inspect filesink
2) gst-launch:gstreamer管道建立命令,使用该命令可以组件若干个pipeline形成一条数据流,完成指定的工作。
gstreamer常用的几个pipeline
1) filesrc、filesink:文件组件,可以用于读取文件进行输入或输出。
2) videotestsrc、ximagesink:测试视频输入,视频显示。
3)appsrc、appsink:用于编程的app组件,可以通过app组件从外部取数据,或者导出数据给用户编辑。
。。。。
4. 用到gstreamer插件的嵌入式板卡
下面举例几个非常熟悉的平台。
1) imx6全系,都提供了gst-fsl-plugins插件,给gstreamer来使用,并且0.10版本和1.0版本都提供,但是根据本人测试,0.10版本存在很多bug,还是用1.0版本较好。
2) omap3xxx系列,提供gstreamer插件。
3) ti8168系列,提供gstreamer插件。
4) hantro g1,芯源编解码芯片,提供gstreamer插件,但是非官方的,本人维护一部分,国内下载不来。
5) interl、nvidia显卡,支持gstreamer加速。