最近項目需要開發網路視頻應用,因為視頻要編碼,選擇使用h.264進行編碼,從網上找到x264這個庫使用,但是不幸的是這個庫是linux下的,但是我們的應用需要部署在windows系統上,故我只能自己編譯成動態連結程式庫來使用了,從網上找了好多方法,但是發現都不太好用,到我這老是出問題,特在此將我自己的配置過程記錄下來。
我採用的mingw進行編譯的方式
首先從網上下載mingw,地址http://sourceforge.net/projects/mingw/,下載下來之後進行安裝,到選擇安裝模組的時候,選擇所有的模組,如所示:圖中顯示不全,需要將捲軸向下滑動,選中所有的。
之後進行安裝,這個安裝是線上的,需要進行一段時間,趁著這個時間我們可以把其他需要的工具下載下來。
從x264的官網下載x264的原始碼,http://www.videolan.org/developers/x264.html,下載下來後解壓到任意位置,之後下載一個叫yasm的軟體,因為在編譯x264的時候會用到,地址:http://yasm.tortall.net/Download.html,下載win32版的,如果下載下來的名字不為yasm.exe,將其改名為yasm.exe,此時差不多mingw也安裝好了,將yasm拷貝到mingw檔案夾下的bin檔案夾下,比如我的是C:/mingw/bin。
接下來,進行最重要的一步,將mingw添加進環境變數,否則會出問題,可以使用命令列,也可以使用介面直接設定。命令列使用如下:開啟cmd 輸入setx MSYS_HOMEc:/mingw/bin,一定要把目錄位址設定為自己的mingw的安裝資料夾的位置。或者使用介面設定,右鍵電腦->屬性->進階系統設定->環境變數,添加一條新的。
這時,運行mingw檔案夾下msys/1.0/msys.bat,然後就能看到如所示介面,通過命令列切換到x264原始碼所在目錄。
然後輸入./configure--enable-shared不出意外地話就能成功了,然後輸入make,趁著make的時間我們再來下載一個工具用來將dll匯出lib,這個工具名字叫做poxports,下載連結:http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/,下載之後將poxports.exe放在/mingw/bin目錄下,然後等make成功之後執行下面的命令:
pexports d:\\libx264-120.dll >d:\\libx264-120.def
之後開啟cmd,切換到x264原始碼所在的目錄,輸入以下命令:(執行這條命令必須確保機器安裝了vs2008或者vs2010的vs tools)
lib /machine:x86 /def:libx264-132.def/out:libx264-32.lib
然後就能匯出libx264-132.dll和libx264-32.lib
用vs建立工程,將libx264-132.dll和libx264-32.lib放到工程目錄下,
從x264檔案夾下拷出x264.h與x264_config.h到工程目錄下,並添加到工程,
同時再工程設定中添加lib庫。編譯運行,ok。運行過程可能會提示缺少pthreadGC2.dll,
從網上下載一個就好了。
#include <iostream>
#include <string>
#include "stdint.h"
extern "C"
{
#include "x264.h"
#include "x264_config.h"
};
using namespace std;
int main()
{
x264_param_t param;
x264_param_default(¶m);
return 0;
}
我覺得這個庫其實可以編譯好了之後直接拿來用就好了,不用每個人都自己編譯一遍的,
我將我自己編譯的結果進行了打包,但是今天卻不能傳到csdn上,所以有需要的可以留下郵箱,
我看到之後直接發你郵箱。等之後可以上傳了之後我就直接上傳上去。
關於具體的這個庫的使用我現在也不太會,等學習了之後再更新怎麼編程。
我把這個庫和我編譯好的ffmpeg庫都傳到了我的github上,需要的點擊這裡