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/
二、編寫測試樣例
測試樣例:
int main (int argc,char*argv[])
{
const gchar*nano_str;
guint major, minor, micro, nano;
gst_init (&argc,&argv);
gst_version (&major,&minor,µ,&nano);
if (nano==1)
nano_str ="(CVS)";
else if (nano ==2)
nano_str ="(Prerelease)";
else
nano_str ="";
printf ("This program is linked against GStreamer %d.%d.%d %s/n",
major, minor, micro, nano_str);
return 0;
}
編譯:
我看到有些文章寫的編譯指令是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