GStreamer 是 GNOME 桌面环境下用来构建流媒体应用的多媒体框架(framework),其目标是要简化音/视频应用程序的开发。GStreamer是一个开源的多媒体架构库。利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频的处理。
一、安装gstreamer
安装gstreamer基础库
apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-tools gstreamer0.10-doc //具体的安装位置为/user/share/doc/
apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse //具体的安装位置为/user/share/doc/和/user/lib
安装ffmpeg支持插件
apt-get install gstreamer0.10-ffmpeg //具体的安装位置为/user/share/doc/
二、编写测试样例
测试样例:
编译:
我看到有些文章写的编译指令是gcc-Wall $(pkg-config--cflags--libs gstreamer-0.10) hello.c-o hello,但是我使用这个指令就是编译不过,提示错误是:Undefined reference to gst_init。因为找得到头文件,但是头文件里声明的函数没有定义,我以为是库找不到的问题,所以,试图在系统环境变量中显式的添加,但是没有效果。我查了一下用指令
#pkg-config--cflags--libs gstreamer-0.10
可以查看gstreamer-0.10模块相应的头文件和包括的库.确认包含了该包含的头文件和库文件。后来,我看了一些相关的文章,我试图改了一下:
gcc-Wallhello.c-o hello $(pkg-config--cflags--libs gstreamer-0.10)
就可以正常编译了。
我到现在也不知道为什么,希望有高手看到了我的blog,帮我解答一下。先在此谢过啦!
运行:
。/hello
运行结果:
This program is linked against GStreamer 0.10.36
三、gstreamer常用工具
1、gst-inspect-1.0
该工具可以用来查询插件的参数
2、gst-launch-1.0
该工具构建gstreamer的pipleline
3、gstreamer-properties
在GNOME中,该工具可以列举音频输出模块。
四、gstreamer使用
1、gstreamer插件的参数查询
$ gst-inspect-1.0 fakesrc //查询element of fakesrc
如果没有这个元件,将会打印出"no such element or plugin"。
2、可以查看系统中有多少插件
$ gst-inspect-1.0
3、以指定插件的方式处理多媒体文件
gst-launch-1.0 filesrc location=thesong.mp3 ! mad ! pulsesink //播放一个mp3文件
4、系统自动检测安插正确的插件
$gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin ! pulsesink
$gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin ! videoconvert ! xvimagesink
$gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin name=decoder
decoder. ! videoconvert ! xvimagesink
decoder. ! audioconvert ! pulsesink
$gst-launch-1.0 playbin uri=file:///home/joe/my-random-media-file.mpeg