FFmpeg是一個開源免費跨平台的視頻和音頻流項目,它提供了錄制、轉換以及流化音視頻的完整解決方案。本文作者將嘗試使用該庫實現一個可適應復雜網絡環境的,
支持標准rtsp協議的流媒體服務器。由於Visual Studio提供的C/C++編譯器對C99標准的不兼容,因此它不能直接使用MSVC++編譯,本文采用在Windows下配置一個類
似Linux的編譯環境的方式編譯ffmpeg源碼。
1、准備工作:
先把下面四個軟件下載下來。
1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/
2) SDL http://www.libsdl.org/download-1.2.php 注意:在此環境下2.0.3版本的源碼編譯會有問題,不推薦。
3)yasm http://yasm.tortall.net/Download.html
4)FFmpeg http://www.ffmpeg.org/download.html
2、安裝MinGW-MSYS Bundle軟件
MinGW-MSYS Bundle軟件同時包含了MinGW和MSYS,不需要連接網絡進行安裝,按照軟件默認的安裝向導,一路Next,把軟件安裝好。
安裝好后會在桌面生成一個快捷方式,指向文件"C:\Program Files\MinGW-MSYS\msys.bat"。雙擊啟動該控制台,后面的操作都將在此控制台下完成。
3、安裝SDL
把SDL源碼解壓縮到F:\Work\ffmpeg-2.4\SDL-1.2.15目錄。進入SDL目錄,分別執行
./configure --prefix=/usr/local/SDL
make
make install
完成SDL的安裝。
SDL編譯完成之后,生成的bin文件、include文件、lib文件存放在C:\msys\1.0\local\SDL目錄下。
通過下面命令導入SDL環境變量.
export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include:/usr/local/SDL/lib"
否則,在執行ffmpeg configure時,SDL support項顯示為no.(注:mingw默認根目錄對應與windows下的C:\msys\1.0\目錄,可以通過echo $PATH查看當前的系統路徑)
4、安裝yasm
把yasm源碼包(在yasm官網下載了好久下載不了,每次下載到一半就斷了,后來在csdn上下載的)解壓到F:\Work\ffmpeg-2.4\yasm1.2.0目錄。
進入yasm目錄,分別執行:
./configure --prefix=/usr/local/yasm
make
make install
並通過下面命令導入yasm環境變量。
export PATH="$PATH:/usr/local/yasm/bin"
5、安裝ffmpeg
把ffmpeg源碼(ffmpeg-2.4.tar.bz2)解壓到F:\Work\ffmpeg-2.4\ffmpeg-2.4,進入ffmpeg代碼目錄, 分別執行下面命令:
編譯為靜態庫:./configure --enable-static --enable-memalign-hack --prefix=/usr/local/ffmpeg2.4或
編譯為動態庫:./configure --enable-shared --enable-memalign-hack --prefix=/usr/local/ffmpeg2.4
make 注意:此處可能會出現類似unable to rename ffplay.exe:reason file exists錯誤,將360衛士退出后即可解決。
make install
編譯完成后,在C:\msys\1.0\local\ffmpeg2.4目錄下的bin、include和lib文件夾下可以看到編譯結果。靜態庫是以 .a 為后綴的文件,共享庫是以 .dll為后綴的文件。
此時就可以在控制台下用ffplay.exe Wildlife.wmv命令播放視頻文件,
或者用ffplay.exe rtsp://admin:12345@192.168.10.76:554命令播放網絡流數據了。