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

來源:互聯網
上載者:User

 

轉自: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,共同進步!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.