在Windows平臺上建立GStreamer開發環境

 

轉自:http://blog.sina.com.cn/s/blog_48f93b530100c4sq.html

 

GStreamer是一個跨平臺的多媒體開發框架(http://gstreamer.freedesktop.org/ ),不過由於在Windows平臺上已經有了成熟的DirectShow,因此其在Linux平臺上更加受到追捧,在Linux上的地位也與 DirectShow在Windows上的地位相當。GStreamer中的很多概念與DirectShow中的相似,很多設計也借鑑了 DirectShow,似乎找不到在Windows平臺上應用它的理由。但是仔細考慮一下,還是會發現研究它的諸多好處:

1、GStreamer是跨平臺的,如果想開發更加通用的應用程序,無疑是目前最有效率的框架;

2、GStreamer框架是基於插件的,開發、擴展與維護都非常方便,相對於DirectShow的COM框架,插件更小巧靈活,更具通用性,限制更少;

3、GStreamer是純C代碼開發,採用GObject編程模式,依附於GLib2.0對象模型,編譯文件小巧,運行速度快,並且爲框架加入了RTII特性;

4、很多特色設計:插件和管道信息都可以用XML標準格式進行存儲、命令行形式的調試與測試、API的多種語言綁定、衆多特色的插件以及gnonlin,gst-editor,gst-recorder等特色模塊;

5、衆多建立在GStreamer框架上的優秀開源項目,給我們提供了絕好的應用例子,也許哪天手癢了,可以自己開發一個:)

當然,GStreamer相對DirectShow來說也有它不足的地方,需要我們大家繼續努力加以完善。

遺憾的是在Windows平臺上進行GStreamer應用與開發目前還不是一件很簡單的事情,尤其是對於GNU開發瞭解不是很多的朋友來說。如果只是進行應用的話,可以直接用GStreamer提供的安裝程序進行安裝,但是安裝程序並不是隨代碼及時更新的(有一個叫做GStreamer WinBuilds的項目專門做這件事,我試了一下好像不是很好用);如果要進行GStreamer開發的話,就是一件比較麻煩的事情了,這篇文章將討論這個問題。

在Windows平臺上建立GStreamer開發環境,需要配置相應的.dll二進制文件、.h頭文件和.lib庫文件,設置系統環境變量,以及爲開發環境指定編譯鏈接文件路徑。二進制運行文件可以直接安裝,也可以自己編譯。開發環境常用的2種編譯器爲:GCC和MSVC。若用GCC作爲編譯器,則需要在Windows平臺上建立MSYS/MinGW環境;但對於大多數Windows平臺開發人員來說,還是熟悉MSVC,本文主要介紹這一種。

一、用OABuild編譯GStreamer(http://people.collabora.co.uk/~oleavr/OABuild/
GStreamer的開發組推薦用這種方法,它可以方便快捷的編譯GStreamer, GTK+, D-Bus, Telepathy等模塊,不用安裝MinGW/cygWin環境。OABuild是專爲Windows平臺開發人員進行開源項目開發提供的一個工具,爲很多GNU庫提供了Windows下.NTE環境的綁定,可以直接對這些庫進行編譯。用戶通過bzr工具在線安裝OABuild後,執行 bootstrap腳本,即可自動調用cvs或svn下載相應版本的庫源碼,並通過python或perl執行相應腳本,完成整個項目的.NET工程及環境配置。完成後用戶只要打開OABuild.sln進行編譯就可以得到所需的.h文件、.lib文件和.dll文件。OABuild項目有兩個版本,v1 已經不再維護,在MSVS2005上用,v2在MSVS2008上用,目前OABuild已經被OAH項目代替.由於我的機器上只有05,所以我只試了 v1版,出現幾個庫的代碼下載失敗的問題。

二、用GStreamer提供的安裝文件安裝,手動配置開發包
GStreamer提供了Win32的安裝包,具體建立步驟如下。
1、下載GTK+2.0 bundle包,其中包括了GTK在Windows下運行依賴的第三方庫以及GTK+ runtime運行文件及開發包。下載地址:http://www.gtk.org/download-windows.html 然後將文件解壓縮到一個路徑下面,並將bin路徑加到PATH環境變量中。在shell中運行pkg-config --cflags gtk+-2.0命令,再運行gtk-demo命令,會出現一個測試程序檢驗是否可以正常運行。若想使界面爲Windows風格,建立一個文件etc/gtk-2.0/gtkrc,在其中寫上gtk-theme-name = "MS-Windows",保存就可以了。
2、下載GStreamer各個模塊的安裝包以及開發包。下載地址:http://gstreamer.freedesktop.org/pkg/windows/releases/ 。GStreamer運行必須的3個模塊爲gstreamer、gst-plugins-base和gst-plugins-good。安裝包直接按照順序安裝即可,自動安裝到C:/Program Files/Common Files/GStreamer下,並會將bin的路徑設置到PATH環境變量中;將所有開發包中的include和lib文件夾下的文件解壓到一個統一路徑下,用於給編譯環境設置編譯鏈接文件加載路徑。
3、下載libxml2包,libxml2是爲Gnome項目開發的XML操作工具包,我們要下載Windows平臺版本。下載地址:http://www.zlatkovic.com/pub/libxml/ 。將bin目錄下的文件拷貝到GStreamer路徑的bin文件夾下,將include、lib文件夾下的文件解壓到GStreamer對應的include、lib路徑下。
4、下載win_iconv包,該庫是用來完成字符編碼轉換的。下載地址:http://www.gtk.org/download-windows.html 。文件的拷貝位置同上。
5、下載libpng13.dll文件,最新的Gstreamer中調用的版本與GTK包中的版本不同,需要更新一下。下載地址:http://www.zhaodll.com/dll/l/200607/321.html 。放到GStreamer路徑的bin文件夾下。

做完以上工作以後,GStreamer開發所需要的所有文件都已經有了。下面用一個簡單的例子,來說明MSVC環境的配置,以及GStreamer開發的簡單步驟。
1、在MSVC2005中,新建一個名爲GSTest的Win32控制檯工程;
2、在工程的屬性中,添加GStreamer和GTK的頭文件路徑,添加GStreamer和GTK的庫文件路徑;
3、在工程屬性中,添加glib以及glibconfig的頭文件路徑,其分別在GTK的include目錄下的glib-2.0文件夾,以及GTK目錄下的/lib/glib-2.0/include文件夾;
4、在工程屬性中,設置引用的GStreamer庫文件libgstreamer-xxx.lib,其中xxx爲庫的版本號,我的是libgstreamer-0.10.lib;
5、在GSTest.cpp文件中,加入語句#include <gst/gst.h>即可訪問GStreamer庫函數了,下面爲main函數代碼:
int _tmain(int argc, _TCHAR* argv[])
{
const gchar *nano_str;
guint major, minor, micro, nano;

gst_init (&argc, &argv);

gst_version (&major, &minor, &micro, &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;
}
6、最後,MSVC2005的Win32控制檯程序默認是Unicode字符集,將其改爲多字節字符集,Build工程,在shell裏運行GSTest.exe,得到運行結果
“This program is linked against GStreamer 0.10.14 (CVS)”

以上就是在Windows平臺建立GStreamer開發環境的步驟,希望大家能共同探討GStreamer,共同進步!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章