gstreamer 學習教程(一) 開發環境搭建
Win7 , vs2013 下 Gstreamer 開發環境搭建兩年前就想學習Gstreamer了,可是一直沒時間,現在才有空,準備把學習過程寫成博文,和初學的童靴一起分享成長過程。寫得不好,還請見諒。
開發環境選擇: window7專業版 32位系統, vs2013專業版。
-
開發包下載
網上看了一下,開發環境一般是用google的 GStreamer-WinBuilds 和 GStreamer-WinBuilds-SDK兩個程式搭建,但下載安裝完,發現版本是0.10.28的舊版本。有點不爽,都過去4,、5年,我一個新手為什麼還要學這麼舊的東西。軟體更新這麼快,5年的時間不算短。到官網轉悠一圈,發現gstreamer現在提供安裝版的開發包,決定用新的版本搭建開發環境。
首先,到gstreamer的官網下載開發吧,地址為 http://gstreamer.freedesktop.org/data/pkg/windows/1.4.5 ,需要下載的兩個包分別為 gstreamer-1.0-x86-1.4.5.msi,gstreamer-1.0-devel-x86-1.4.5.msi.部分小夥伴可能訪問不了。直接百度網盤吧。地址為:http://pan.baidu.com/s/1i3gRC4d, http://pan.baidu.com/s/1dDeXVeL。下載完後先安裝gstreamer-1.0-x86-1.4.5.msi,然後安裝gstreamer-1.0-devel-x86-1.4.5.msi。安裝完成,已經成功一半了。
-
開發環境配置
a.新建專案
開啟vs2013,依次開啟 檔案->新建專案->模板->Visual C++ -> Win32 ->Win32控制檯應用程式,然後填入專案名稱和儲存位置。如果所示:
點選 確定,到設定嚮導, 直接點選完成。專案新建成功。
網上看了一下,開發環境一般是用google的 GStreamer-WinBuilds 和 GStreamer-WinBuilds-SDK兩個程式搭建,但下載安裝完,發現版本是0.10.28的舊版本。有點不爽,都過去4,、5年,我一個新手為什麼還要學這麼舊的東西。軟體更新這麼快,5年的時間不算短。到官網轉悠一圈,發現gstreamer現在提供安裝版的開發包,決定用新的版本搭建開發環境。
首先,到gstreamer的官網下載開發吧,地址為 http://gstreamer.freedesktop.org/data/pkg/windows/1.4.5 ,需要下載的兩個包分別為 gstreamer-1.0-x86-1.4.5.msi,gstreamer-1.0-devel-x86-1.4.5.msi.部分小夥伴可能訪問不了。直接百度網盤吧。地址為:http://pan.baidu.com/s/1i3gRC4d, http://pan.baidu.com/s/1dDeXVeL。
下載完後先安裝gstreamer-1.0-x86-1.4.5.msi,然後安裝gstreamer-1.0-devel-x86-1.4.5.msi。安裝完成,已經成功一半了。b.配置專案
在專案上右擊,選擇屬性。彈出屬性對話方塊。配置-》所有配置,配置屬性-》VC++目錄。修改包含目錄,下下圖所示:d:/gstreamer換成自己的gstreamer安裝目錄。
繼續上一步,修改庫目錄:把d:/gstreamer替換成自己的目錄。點選確定。
然後修改連線配置,如下圖。在附件依賴項裡面增加gobject-2.0.lib;glib-2.0.lib;gstreamer-1.0.lib;,點選確定,儲存配置。所需的配置到此完成。下面開始寫程式碼。
-
Gstreamer程式碼編寫
在原始碼檔案中輸入如下程式碼:
#include "stdafx.h"
#include <gst\gst.h>
int _tmain(int argc, _TCHAR* 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);
getchar();
return 0;
}
直接編譯。編譯出現問題:錯誤 1 error C2664: “void gst_init(int *,char **[])”: 無法將引數 2 從“_TCHAR **[]”轉換為“char **[]” d:\project\vs2013\consoleapplication1\consoleapplication1\consoleapplication1.cpp 11 1 ConsoleApplication1字符集轉換的問題。暫時修改一下字符集,編譯通過吧! 在專案屬性裡修改字符集為 使用多位元組字符集。如下圖:
編譯執行,找不到dll,需要把gstreamer的bin目錄加到path裡面。修改環境變數,在Path變數的前面加上D:\gstreamer\1.0\x86\bin; D:\gstreamer換成自己的安裝目錄。
再次執行,顯示如下:
至此,開發環境編譯搭建成功。