Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述
一.環(huán)境配置
1.下載并安裝 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef … -5.1.4.exe),安裝時(shí)選中 g++, mingw make。建議安裝到c:/mingw.
2.下載并安裝 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourcef … 1-rc-1.exe),安裝結(jié)束時(shí)會(huì)以命令行方式提示輸入MinGW的安裝路徑,輸入c:/MinGW, msys建議安裝到c:/msys, 默認(rèn)是c:/msys-1.0, 可以手動(dòng)改為c:/msys。
3.下載gcc-4.3.2-tdm-1-core.zip (http://ftp3.ie.freebsd.org/pub/sourcefo … 1-core.zip),解壓后覆蓋到 c:/mingw 安裝目錄. minGW-5.1.4 默認(rèn)安裝的版本是3.4.5.
二.下載 ffmpeg 0.5 (http://ffmpeg.mplayerhq.hu/releases/ffmpeg-0.5.tar.bz2)
1.解壓后拷貝到c:/msys/home/目錄下。 (C:/msys/home/ffmpeg-0.5)
2.用文本編輯器打開(kāi)源碼目錄下的 configure (C:/msys/home/ffmpeg-0.5/configure) 文件,搜索兩處 pr 全部替換為 print。
3.運(yùn)行c:/msys.bat,進(jìn)入c:/msys/home/ffmpeg-0.5源碼目錄,創(chuàng)建release目錄 (madir release) 和 debug 目錄 (mkdir debug) 目錄,視需求編譯 release 或 debug 版本:
4. 進(jìn)入c:/msys/home/ffmpeg-0.5/release 目錄下執(zhí)行: ../configure --disable-static --enable-shared --enable-small --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib
5.或進(jìn)入 c:/msys/home/ffmpeg-0.5/debug 目錄下執(zhí)行: ../configure --disable-static --enable-shared --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib --enable-debug=3 --disable-optimizations --disable-stripping
6.make
7.make install
注:參數(shù)解釋
a.--extra-ldflags=-L<prefix>/lib --extra-cflags=-I<prefix>/include
? ? ? 如果你把庫(kù)安裝在了非gcc的缺省尋找路徑,你必須向FFmpeg的configure腳本傳遞這些路徑信息。
b.--enable-small
? ? ? ?optimize for size
c.--enable-nonfree
? ? ? ?Yes, FFmpeg recently changed the --enable-libfaac to require --enable-nonfree due to some inconsisent licensing
declarations in the faac source. You can also workaround this by not enabling AAC in the wizard. They have a
native AAC encoder in progress, but it is not ready and enabled yet.
三.支持x264 (--enable-libx264)
1. 下載 x264 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg /x264-1024283.tar.bz2) (x264-snapshot-20100115-2245.tar.bz2這個(gè)源碼編譯不過(guò),不知道為什么,有時(shí)間仔細(xì)研究研究。)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/x264-1024283)
3.進(jìn)入c:/msys/home/x264-1024283 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared --disable-asm
4.make
5.make install
四.支持xvid (--enable-libxvid)
1.下載 xvid 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg/xvidcore-1.2.2.tar.bz2)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/xvidcore)
3.進(jìn)入c:/msys/home/xvidcore/build/generic 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared
4.make
5.make install
五.支持MP3 (--enable-libmp3lame)
1.下載 MP3 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg/lame-398-2.tar.gz)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/lame-398-2)
3.進(jìn)入c:/msys/home/lame-398-2 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared
4.make
5.make install
六.支持FAAC (--enable-libfaac)
1.下載 FAAC 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg/faac-1.28.tar.bz2)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/faac-1.28)
3.進(jìn)入c:/msys/home/faac-1.28 目錄下執(zhí)行./bootstrap
4../configure --prefix=/usr/local --enable-shared --without-mp4v2
(FAAC 無(wú)需編入 mp4 容器支持,封入 mp4 容器的工作由 ffmpeg 負(fù)責(zé))
5.make
6.make install
七.支持FAAD (--enable-libfaad)
1.下載 FAAD 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg/faad2-2.7.tar.bz2)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/faad2-2.7)
3.進(jìn)入c:/msys/home/faad2-2.7 目錄下執(zhí)行 autoreconf -vif
注:編譯FAAD需要使用autoreconf, 下載msysDTK-1.0.1.exe 安裝到c:/msys.
4../configure --prefix=/usr/local --enable-shared --without-mp4v2
5.make
6.make install
八.支持gsm (--enable-libgsm)
1.下載 gsm 原始碼(http://www.imagemagick.org/download/delegates/ffmpeg/gsm-1.0.13.tar.gz)
2.解壓后拷貝到c:/msys/home/目錄下 (c:/msys/home/gsm-1.0-pl13)
3.進(jìn)入c:/msys/home/gsm-1.0-pl13 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared
4.make
注:make編譯出錯(cuò)(make: *** [bin/toast] Error 1), 忽視這個(gè)錯(cuò)誤,不影響。
5.cp c:/msys/home/gsm-1.0-pl13lib/libgsm.a? c:/msys/local/lib
6.cp c:/msys/home/gsm-1.0-pl13lib/inc/gsm.h? c:/msys/local/include
九.libamr-nb (--enable-libamr-nb)
1.下載 libamr-nb 原始碼(http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2)
2.解壓后拷貝到c:/msys/home/目錄下 (C:/msys/home/amrnb-7.0.0.2)
3.下載26104-700.zip (http://www.3gpp.org/ftp/Specs/archive/2 … 04-700.zip), 將這個(gè)zip包放到c:/msys/home/amrnb-7.0.0.2 目錄下面
4.下載unzip-5.51-1-bin.zip (http://downloads.sourceforge.net/gnuwin … -1-bin.zip),解壓后將unzip.exe到/mingw/bin下。
5.進(jìn)入c:/msys/home/amrnb-7.0.0.2 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared
6.make
7.make install
十.libamr-wb (--enable-libamr-wb)
1.下載 libamr-wb 原始碼(http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2)
2.解壓后拷貝到c:/msys/home/目錄下 (C:/msys/home/amrwb-7.0.0.3)
3.下載26204-700.zip (http://www.3gpp.org/ftp/Specs/archive/2 … 04-700.zip), 將這個(gè)zip包放到c:/msys/home/amrwb-7.0.0.3 目錄下面
4.下載unzip-5.51-1-bin.zip (http://downloads.sourceforge.net/gnuwin … 工作,這里就不用做了)
5.進(jìn)入c:/msys/home/amrwb-7.0.0.3 目錄下執(zhí)行: ./configure --prefix=/usr/local --enable-shared
6.make
7.make install
十一.最后編譯ffmpeg 0.5
1.進(jìn)入c:/msys/home/ffmpeg-0.5/release
2. ../configure --disable-static --enable-shared --enable-small --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib --enable-libgsm --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-nonfree --enable-libxvid --enable-libx264 --enable-libamr-nb --enable-libamr-wb
3.make
4.make install
?
十二. 編譯出lib 文件
以上方式默認(rèn)不能編譯出 .lib文件。如果希望在vc++調(diào)用ffmpeg 庫(kù),要用到相應(yīng)的 .lib 文件。可以用以下方式編譯。
?
1.在msys.bat開(kāi)頭添加一句話:call "C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/VCVARS32.BAT"
根據(jù)自己vc7實(shí)際路徑修改以上路徑。在重復(fù)步驟十一。
先寫(xiě)到這里,在以后的應(yīng)用實(shí)踐中不斷補(bǔ)充。
2 Reply by 暈來(lái)暈去 2010-09-08 10:51:27
- 暈來(lái)暈去
- Administrator
- Offline
- Registered: 2010-05-26
- Posts: 984
Re: Windows系統(tǒng)使用minGW+msys 編譯ffmpeg 0.5的全過(guò)程詳述 (轉(zhuǎn))
http://hi.baidu.com/zorru/blog/item/ea3 … ae2cf.html
如何編譯FFMPEG(WIN,MINGW+MSYS)
如何編譯FFMPEG
一:配置
1:install MinGW 5.0.2
Download: http://prdownloads.sf.net/mingw/MinGW-5 … e?download
2:install MSYS 1.0.1
Download: http://prdownloads.sf.net/mingw/MSYS-1. … e?download
3:install MSYSDTK 1.0.1
Download: http://prdownloads.sf.net/mingw/msysDTK … e?download
4:install dos2unix.exe
Download: http://www.bastet.com/uddu.zip
extract, and place a copy of dos2unix.exe in C:/mingw/bin
5:install nasm.exe
Download: http://prdownloads.sourceforge.net/nasm … p?download
extract, rename nasmw.exe to nasm.exe and place a copy in C:/mingw/bin
二:裝載庫(kù)
1:libogg 1.1.3
download: http://downloads.xiph.org/releases/ogg/ … 1.3.tar.gz
./configure --disable-shared
make
make install
2:vorbis 1.1.2
download: http://downloads.xiph.org/releases/vorb … 1.2.tar.gz
./configure --disable-oggtest --disable-shared
--with-ogg-includes=/usr/local/include
--with-ogg-libraries=/usr/local/lib
make
make install
3:libfaac - faac-snapshot-20060329
download: cvs -z3 -d:pserver:anonymous at cvs.audiocoding.com:/cvsroot/faac co -P faac
dos2unix configure.in
./bootstrap
./configure --without-mp4v2
make
make install
4:libfaad - faad2-15092004.tar.gz
download: http://www.audiocoding.com/modules/mydo … amp;lid=19
modify line 308 of libfaad/common.h from:
#elif (defined(__i386__) && defined(__GNUC__))
to
#elif (defined(__i386__) && defined(__GNUC__) && !defined(__MINGW32__))
./bootstrap
./configure --with-drm
cd libfaad
make
make install
5:a52 - a52dec-0.7.5-cvs
download: cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/liba52 co -P liba52
./configure
make
make install
6:mp3lame - lame-3.97b2
download: cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/lame co -P lame
./configure --disable-shared
make
make install
7:libdts - libdts-0.0.2
./configure
make
make install
8:xvid - xvidcore-1.1.0
download: http://downloads.xvid.org/downloads/xvi … 1.0.tar.gz
cd build/generic
./configure --prefix=c:/mingw --disable-shared
make
make install
rm /c/mingw/lib/xvidcore.dll
mv /c/mingw/lib/xvidcore.a /c/mingw/lib/libxvidcore.a
9:libx264 - x264-snapshot-20060416-2245
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
./configure
make
make install
10:ffmpeg - ffmpeg-cvs-20060417
Download lastest version using cvs:
cvs -z3 -d:pserver:anonymous at mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg
./configure --enable-faac --enable-faad --enable-a52 --enable-mp3lame
--enable-dts --enable-xvid --enable-x264 --enable-vorbis
--enable-libogg --enable-gpl --enable-pp --enable-mingw32
--enable-memalign-hack --disable-debug
--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
make
make install
附言:
(關(guān)于編譯器的問(wèn)題)
1.可能沒(méi)有PR.EXE,(configure時(shí)候會(huì)用到這個(gè)工具)
A:下載unixutils,把其中的pr.exe拷到bin下面.下載地址 http://unxutils.sourceforge.net/
B:下載coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2,把其中的pr.exe拷到bin下面
2.可能要安裝bash-3.1.
3.LIB庫(kù)的產(chǎn)生:
msys.bat的最前面,把路徑替換成機(jī)器上vcvars32.bat實(shí)際存在的路徑,
機(jī)器上:"D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin",
添加:call "D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat"
?
FFmpeg在windows下的編譯,搭建mingw+msys環(huán)境[轉(zhuǎn)載,有改動(dòng)]
ffmpeg,windows,編譯,mingw,msys
| 本帖最后由 終有時(shí) 于2010-9-14 07:40 PM 編輯 |
14. libamr庫(kù)加入
首先下載http://gd.tuwien.ac.at/gnu/mingw/wget-1.9.1-mingwPORT.tar.bz2,解壓wget.exe到/mingw/bin下。
下載http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip,解壓bin/unzip.exe到/mingw/bin下。
下載兩個(gè)庫(kù):
amrnb:http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2
amrwb:http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
分別解壓到~下面。(~:/home/yourname)。
下載http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-700.zip,將這個(gè)zip包放到~/amrnb-7.0.0.2下面。
下載http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-700.zip,將這個(gè)zip包放到~/amrwb-7.0.0.3下面。
~/amrnb-7.0.0.2和~/amrwb-7.0.0.3下面分別執(zhí)行:
./configure --disable-shared
make
make install
其中,--disable-shared將產(chǎn)生靜態(tài)庫(kù),如需要?jiǎng)討B(tài)庫(kù),則不要加這個(gè)選項(xiàng)。
進(jìn)入ffmpeg-0.5目錄,
保存以下腳本為ffmpeg-conf02.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-memalign-hack --enable-libamr-nb --enable-libamr-wb --enable-nonfree --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
執(zhí)行以下腳本:
rm -rf config.*
sh ffmpeg-conf02.sh
make
其中rm -rf config.*是為了確保config.h文件能被重寫(xiě)。如果不刪除而是覆蓋的話,可能會(huì)有不能寫(xiě)入覆蓋的情況,所以,每次重新從configure開(kāi)始的編譯的話,還是執(zhí)行下這個(gè)rm命令把configure產(chǎn)生的文件都干掉。
這樣編譯出來(lái)的ffplay就可以播放3gp文件了。(附件提供)
15. libmp3lame庫(kù)加入
首先到lame-3.97.tar.gz (不要最新的版本3.98.2,ms有些問(wèn)題,說(shuō)audio專碼的buffer不夠)
http://sourceforge.net/projects/lame/files/lame/lame-3.97.tar.gz/download
解壓到~下。
執(zhí)行以下腳本:
./configure --disable-shared
make
make install
進(jìn)入ffmpeg-0.5目錄,
保存以下腳本為ffmpeg-conf03.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h
ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-nonfree -
-extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
執(zhí)行以下腳本:
rm -rf config.*
sh ffmpeg-conf03.sh
make
make后就可以使用ffmpeg玩MP3的轉(zhuǎn)碼了
ffmpeg -i d:/video/01.avi -vcodec mpeg2video -acodec libmp3lame 01.mpg
16. libfaac及libfaad庫(kù)加入
下載faac及faad的源碼:
http://sourceforge.net/projects/faac/files/faac-src/faac-1.28.tar.bz2/download
http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7.tar.bz2/download
分別解壓到~下。
注釋掉faad2-2.7/frontend/main.c的第34行:
分別執(zhí)行:
./bootstrap
./configure --disable-shared --without-mp4v2
make
make install
進(jìn)入ffmpeg-0.5目錄,
保存以下腳本為ffmpeg-conf04.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h
ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-libfaac -
-enable-libfaad --enable-gpl --enable-nonfree --extra-ldflags=-L/usr/local/lib -
-extra-cflags=-I/usr/local/include
執(zhí)行以下腳本:
rm -rf config.*
sh ffmpeg-conf04.sh
make
make后就ffmpeg就可以使用faac及faad了。
ffmpeg -i d:/video/02.mp3 -acodec libfaac 01.aac
17. 修改Msys的字體及背景色
用文本編輯器打開(kāi)C:/Msys/msys.bat,如下:
if "x%MINGW32BGCOLOR%" == "x" set MINGW32BGCOLOR=Black
if "x%MINGW32FGCOLOR%" == "x" set MINGW32FGCOLOR=Yellow
及
start rxvt -backspacekey? ???-sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn "Courier New-20" -tn msys -geometry 80x30 -e /bin/sh --login -i
其中上面的Black及Yellow都是顏色。下面的-fn后面跟"字體-大小",80x30為每行80個(gè)字符,共顯示30行。這都是Jeremiah喜歡的設(shè)置。
18. x264編碼支持
下載x264源碼需要用git。
git clone git://git.videolan.org/x264.git
或者去http://www.videolan.org/developers/x264.html中,選You can browse the source on-line,點(diǎn)選最新的snapshot。
Jeremiah測(cè)試用的是http://git.videolan.org/?p=x264.git;a=snapshot;h=5d75a9bd5b942392c4ab64156a266eed64c0793f;sf=tgz
將源碼解壓到~下,執(zhí)行
./configure --disable-asm --enable-shared
make
make install
進(jìn)入ffmpeg-0.5目錄,
保存以下腳本為ffmpeg-conf04.sh
#this is enable amr mp3 aac aad x264
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure /
? ?? ?? ?? ?? ? --enable-ffplay /
? ?? ?? ?? ?? ? --enable-static /
? ?? ?? ?? ?? ? --disable-shared /
? ?? ?? ?? ?? ? --enable-memalign-hack /
? ?? ?? ?? ?? ? --enable-libamr-nb /
? ?? ?? ?? ?? ? --enable-libamr-wb /
? ?? ?? ?? ?? ? --enable-libmp3lame /
? ?? ?? ?? ?? ? --enable-libfaac /
? ?? ?? ?? ?? ? --enable-libfaad /
? ?? ?? ?? ?? ? --enable-gpl /
? ?? ?? ?? ?? ? --enable-nonfree /
? ?? ?? ?? ?? ? --enable-libx264 /
? ?? ?? ?? ?? ? --extra-ldflags=-L/usr/local/lib /
? ?? ?? ?? ?? ? --extra-cflags=-I/usr/local/include
執(zhí)行以下腳本:
rm -rf config.*
sh ffmpeg-conf05.sh
make
make成功后,使用x264,如下:
$ ffmpeg -i d:/01.avi -f psp -acodec libfaac -ab 94k -vcodec libx264 -cqp 28 -coder 1 -refs 3 -deblockalpha 1 -deblockbeta -1 -me_method umh -subq 9 -me_range 32 -trellis 2 -chromaoffset -2 -nr 0 -bf 2 -b_strategy 1 -bframebias 0 -directpred 3 -g 250 -i_qfactor 1.3 -b_qfactor 1.4 -flags2 +bpyramid+wpred+mixed_refs+8x8dct -er 2 -s 480x320 d:/01.mp4
參考網(wǎng)址:
http://wiki.videolan.org/Win32CompileMSYS
[url=http://www.cnblogs.com/sunlin886/archive/2007/03/18/678863.html[/url]]http://www.cnblogs.com/sunlin886/archive/2007/03/18/678863.html[/url]
http://hi.baidu.com/yeyingxian/blog/item/a03576d966b2892910df9b28.html
本文出自 “Jeremiah的流媒體樂(lè)園”博客,出處http://jeremiah.blog.51cto.com/539865/126804。
轉(zhuǎn)載時(shí)有改動(dòng)。
?
發(fā)表于 2010-8-29 11:38 PM| 只看該作者
?
?
| 搭建編譯FFmpeg 的 MinGW+MSYS 環(huán)境,只需敲兩三下鍵盤(pán)就能搞定。 |
附件:您需要登錄才可以下載或查看附件。沒(méi)有帳號(hào)?注冊(cè)
FFVCL - FFmpeg for Delphi VCL Components / C++Builder / FFOCX - ActiveX OCX Controls / VB6 / VC6 / ...
?
?
| 16. libfaac及libfaad庫(kù)加入 |
TOP
?
| 解決了! |
TOP
?
?
libmp3lame庫(kù)加入問(wèn)題,
最近編譯最新的ffmpeg,發(fā)現(xiàn)要libmp3lame庫(kù)3.98.4,我不清楚如何卸載這些庫(kù)?刪掉就可以?
?
在windows平臺(tái)下編譯出libavcodec庫(kù)前邊做了msys的環(huán)境搭建,在編譯ffmpeg時(shí),還需要做以下的工作。
1. 整合系統(tǒng),把
call "c:/Program Files/Microsoft Visual Studio 9.0/VC/bin/vcvars32.bat"加到d:/msys/msys.bat的最前邊。
2. 運(yùn)行msys.bat后
切換到下載的ffmpeg目錄中,因?yàn)閙sys走的是類UNIX路徑,所以要按UNIX的方式切換路徑等。
如: cd /d/ffmpeg
3.用configure配置Makefile
./configure --enable-shared --disable-static --enable-memalign-hack
這樣是生成動(dòng)態(tài)的編解碼庫(kù),由于1 中加入了vcvars32.bat環(huán)境,故用這樣的模式才會(huì)生成具體的dll及l(fā)ib等,否則vc下調(diào)用接口又會(huì)折騰了.
4.make
編譯ffmpeg整個(gè)項(xiàng)目
5. 在ffmpeg/libavcodec下就會(huì)有相應(yīng)的dll,lib,而ffmpeg//libavformat下也會(huì)有相應(yīng)的dll,lib.
?TAG windows ffmpeg libavcodec
發(fā)表于: 2009-05-18,修改于: 2009-05-29 21:05,已瀏覽577次,有評(píng)論0條 推薦 投訴
四、最新 完整FFMPEG 編譯詳解
2010_3_1最新完整 FFMPEG編譯詳解
[i=s] 本帖最后由 golocy 于 2010-3-1 05:23 PM編輯 [/i]
2010_3_1最新 FFMPEG編譯詳解
在網(wǎng)上看了很多編譯詳解,都很零散。經(jīng)過(guò)自己的編譯,解決一些BUG,在此分享自己的一些經(jīng)驗(yàn)...話不多說(shuō)了!直接上貼。
第一步:準(zhǔn)備編譯平臺(tái)。
需要 一個(gè)MinGW 和 一個(gè) MSYS 安裝包 以及 MSYS_DTK.
? ?當(dāng)前最新是版本:
? ?MinGW5.1.6.exe? ? [url=http://sourceforge.net/projects/mingw/files/]下載[/url]
? ?msysDTK-1.0.1.exe [url=http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe]下載[/url]
? ?Msys1.0.11.exe? ? [url=http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe]下載[/url]
按照以上順序安裝 :
? ???建議:(可選)
? ???把 MinGw5.1.6安裝到 F:/MinGw (為了路徑簡(jiǎn)短起見(jiàn))
? ???把Msys1.0.11安裝到 F:/MinGw/Msys(為了方便起見(jiàn))
(有些機(jī)器不會(huì)在/MinGw/Msys/etc中產(chǎn)生正確的fstab文件,因此確保
/MinGw/Msys/etc中具有一個(gè)fstab文件內(nèi)容為:F:/MinGw /minwg??前者為你的MinGw安裝目錄后面對(duì)應(yīng)MinGw目錄)
第二步:準(zhǔn)備編譯工具
??需要一些編譯工具,以便能夠編譯需要的庫(kù)。
1.二進(jìn)制工具(xx.exe文件)
??pr.exe (在coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2包的bin目錄中)[url=http://sourceforge.net/projects/mingw/files /MSYS Base System/_obsolete/coreutils-5.97-MSYS-1.0.11-2/coreutils- 5.97-MSYS-1.0.11-snapshot.tar.bz2/download]下載[/url]
??(ffmpeg中configure執(zhí)行需要用到)
??復(fù)制到 MinGW/bin中
(注意:是MinGW目錄中的bin)
??SDL 工具 [url=http://www.libsdl.org/docs.php]下載[/url] (ffmpeg需要用到)
??在包中的四個(gè)目錄:bin lib include share一起復(fù)制到 MinGw 目錄下
??(bin 中包含 有 SDL.dll 和 sdl-config)
??在sdl-config中修改第一行為 prefix=/mingw
??([url=http://www.ffmpeg.com.cn/index.php/Ffplay使用事例]參考[/url])
??unzip.exe 工具 [url=unzip-5.51-1.exe][url=http://sourceforge.net/projects/gnuwin32 /files/unzip/]下載[/url][/url](安裝 libamrnb libamrwb需要用到)
??解壓unzip-xxx-bin.zip后在bin 中復(fù)制 unzip.exe 到MinGw/Msys/bin 中
(注意:是 Msys目錄中的bin)
??wget.exe 工具 [url=http://ftp.gnu.org/gnu/wget/]下載[/url](安裝 libamrnb libamrwb需要用到)
??解壓后 在bin 中拷貝 wget.exe 到 MinGw/Msys/bin中
(注意:是 Msys目錄中的bin)
??git.exe 工具 下載(獲取x264庫(kù)需要用到)??安裝:
[url=http://msysgit.googlecode.com/files/Git-1.6.5.1-preview20091022.exe]Git-1.6.5.1-preview20091022.exe[/url]
2.源碼安裝包(需要編譯安裝的工具包)
??autoconf [url=http://ftp.gnu.org/gnu/autoconf/]下載[/url]
??automake [url=http://ftp.gnu.org/gnu/automake/]下載[/url]
??libtool??[url=http://ftp.gnu.org/gnu/libtool/]下載[/url]
??yasm? ???[url=http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz]下載[/url]
??下載最新版 然后解壓到 Msys目錄中的home/Administrator中
??(說(shuō)明:以后需要執(zhí)行'configure' 'make' 'make install' 命令來(lái)安裝的xx.tag.gz包都解壓到Administrator里以便控制臺(tái)中方面路勁的輸入)
包的安裝:
舉例安裝 autoconf包
??在Msys命令行中:
? ? cd autoconf 回車(chē) (從 ~ 目錄 進(jìn)入 autoconf 目錄)
? ? configure 回車(chē) (執(zhí)行配置文件)
? ? make 回車(chē)? ?? ?(開(kāi)始編譯)
? ? make install 回車(chē) (安裝)
安裝 automake包:動(dòng)作同上,只是要進(jìn)入automake 目錄.(cd automake)
第三步:準(zhǔn)備一個(gè)線程庫(kù)(不準(zhǔn)備編譯x264的可以跳過(guò))
??pthread包??[url=ftp://sources.redhat.com/pub/pthreads-win32/pthreads- w32-2-8-0-release.tar.gz]下載[/url]([url=http://ffmpeg.arrozcru.org/wiki/index.php?title=Pthreads]參考[/url])
??解壓到MinGw/Msys/home/Administrator的pthread中
??在Msys命令行中:
? ???cd pthread 回車(chē)
? ???make GC 回車(chē)
??然后在pthread中找到pthreadGC.dll 拷貝到 MinGw/bin 和 MinGw/lib 中
??...............找到pthread.h 和 sched.h??拷貝到MinGw/include 中
??(注意有個(gè)Bug 打開(kāi)sched.h line:152 和 line:154的兩個(gè)函數(shù)的參數(shù)類型pid_t 改成 int 這個(gè)Bug是自己遇到的,修改并不會(huì)影響任何功能,但并沒(méi)有官方驗(yàn)證)
目前這里就配置好所有的編譯環(huán)境了!
? ?以下是支持要編譯的編解碼庫(kù):
//===== Mp3lame [url=http://sourceforge.net/projects/lame/files/lame/]下載[/url]
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為lame
在Msys安裝:
? ?cd lame 回車(chē)
? ?configure --enalbe-shared 回車(chē)
? ?make 回車(chē)
? ?make install 回車(chē)
//===== faac 和 faad2 [url=http://www.audiocoding.com/downloads.html]下載[/url](兩個(gè)包)
faac 安裝:
(faac-1.28 需要一個(gè)補(bǔ)丁[url=http://bbs.chinavideo.org/attachment.php?aid=368&k=bdbac83ed608d3697e25e985527c3b9c&t=1267424723&fid=11&sid=ab1ep/jU/kNhVRIt9st/5vPwWJxoQCf7uJGIj3A397qIkfc]faac-1.28.diff[/url])
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為faac
把補(bǔ)丁放到 faac 目錄中
在Msys安裝:
? ?cd faac 回車(chē)
? ?patch -p1 < faac-1.28.diff 回車(chē)
? ?bootstrap 回車(chē)
? ?configure --with-mp4v2 --enalbe-shared 回車(chē)
(不需要MP4 則第一個(gè)參數(shù)用--without-mp4v2 代替)
? ?make 回車(chē)
? ?make install 回車(chē)
faad 安裝:
(faad2-2.7 需要一個(gè)補(bǔ)丁[url=http://bbs.chinavideo.org/attachment.php?aid=369&k=4624ab33cb734713942aafb25213926c&t=1267427156&fid=11&sid=3fa8T1Vt6ibnc+wFOLP4vp0CkKhIQj1NZ+Hpq3RhVaiUQPw]faad2-2.7.diff[/url])
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為faad2
把補(bǔ)丁放到 faad2 目錄中
在Msys安裝:
? ?cd faad2 回車(chē)
? ?patch -p1 < faad2-2.7.diff 回車(chē)
(也可以手動(dòng)修改,注釋掉faad2/frontend/main.c 中
? ? line: 34 的 #define off_t __int64)
? ?bootstrap 回車(chē)
? ?configure --with-mp4vip --enalbe-shared 回車(chē)
(第一個(gè)參數(shù)可選)
? ?configure順利完成之后
? ???在libfaad/Makefile中修改:
? ?? ???將AM_CFLAGS = -iquote $(top_srcdir)/include
? ?? ???改成:AM_CFLAGS = -I $(top_srcdir)/include
? ???(這個(gè)是一個(gè)Bug修正以免出現(xiàn):
? ?? ? cc1.exe: error: unrecognized command line option "-iquote")
? ?make 回車(chē)
? ?make install 回車(chē)
//===== amrnb 和 amrwb [url=http://www.penguin.cz/~utx/amr#download]下載[/url]
amrnb安裝:
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為amrnb
在Msys安裝:
? ?cd amrnb 回車(chē)
? ?configure --enalbe-shared 回車(chē)
? ?make 回車(chē)
? ?make install 回車(chē)
amrwb安裝:
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為amrwb
在Msys安裝:
? ?cd amrwb 回車(chē)
? ?configure --enalbe-shared 回車(chē)
? ?make 回車(chē)
? ?make install 回車(chē)
//===== xvidcore [url=http://www.xvid.org/Downloads.43.0.html]下載[/url]
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為xvid
在Msys安裝:
? ?cd xvid/build/generic 回車(chē)
? ?configure --enalbe-shared 回車(chē)
? ?make 回車(chē)
? ?make install 回車(chē)
//===== H.264
??下載x264庫(kù):
? ?在Windows 的控制臺(tái)中輸入 :
C:/...>??cd F:/mingw/msys/home/Administrator回車(chē)
(切換路徑到Administrator目錄)
F:/mingw/msys/home/Administrator > git clone git://git.videolan.org/vlc.git
這時(shí)x264包就會(huì)下載到mingw/msys/home/Administrator目錄中
在Msys安裝:
? ?cd x264 回車(chē)
? ?configure --enalbe-shared 回車(chē)
? ?make 回車(chē)
? ?make install 回車(chē)
(有個(gè)Bug,安裝后在mingw/msys/local/include/x264.h中
line:209 中 修改 int i_bframe_pyramid;為int b_bframe_pyramid;保存)
//**************到這里 有一些常用的編解碼庫(kù)了??下面來(lái)編譯FFMPEG
FFMPEG [url=http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2]下載[/url]
解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為ffmpeg
(注意了,編譯x264庫(kù)需要修改一下 ffmpeg的configure
??把 line 1996 :中的 x264_encoder_open加上一個(gè)x264版本號(hào),可以從F:/MinGw
/msys/local/bin中的libx264-xx.dll得知,這里編譯得到的是libx264-88.dll
所以??把line 1996 :中的 x264_encoder_open 改為x264_encoder_open_88,以解決
編譯x264后,編譯ffmpeg提示 libx264 not found.)
在ffmpeg目錄中新建一個(gè)文本文件 改名為cml (無(wú)擴(kuò)展名)
編輯 cml :
configure /
[size=3]--enable-ffplay /
--enable-static /
--enable-memalign-hack /
[/size][size=3]--enable-gpl / [/size]
[size=3]--enable-libmp3lame /
--enable-libfaac /
--enable-libfaad /
--enable-libx264 /
[/size][size=3]--enable-nonfree /??[/size][size=3]
--enable-libamr-nb /
--enable-libamr-wb / [/size]
[size=3]--extra-ldflags=-L/usr/local/lib /
--extra-cflags=-I/usr/local/include [/size]
保存.
在Msys中輸入:
cml 回車(chē)
make 回車(chē)
make install 回車(chē)
大功告成! 不過(guò)xvid不能在ffmpeg編譯中使用--enable-shared參數(shù)
不然會(huì)報(bào)錯(cuò),你可以試試,如果可以,那就是我的機(jī)器問(wèn)題!:-)愉快
xshzh 發(fā)表于2010-7-16 09:32 AM
查看完整版本: 2010_3_1最新完整 FFMPEG 編譯詳解
?
?
//
?
1、??? 用MinGw and Msys 編譯出 libx264.dll.a和 libx264-88.dll,2、??? 然后重命名 libx264.dll.a 為 libx264.lib.
3、??? 在vs2005用 x264編碼器程序編譯,bebug版成功release crash.how create libx264.lib for vc2005?
4、??? .a可以進(jìn)一步編譯成.dll庫(kù)。.lib不可以再編了,所以不能直接改。
5、??? 你需要把它編譯成libx264.dll庫(kù)
6、??? 或者將libx264.a放入mingw中和其他的庫(kù)一起編成.dll
7、???
8、??? 編譯FFMPEG,
FFMPEG在http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2下載,然后解壓到 ~ 目錄 (MinGw/Msys/home/Administrator)改名目錄為 ffmpeg(注意了,編譯x264庫(kù) 需要修改一下 ffmpeg的configure把 line 1996 :中的 x264_encoder_open加上一個(gè)x264版本號(hào),可以從F:/MinGw/msys/local/bin中的libx264-xx.dll 得知,這里編譯得到的是libx264-88.dll所以把line 1996:中的 x264_encoder_open 改為 x264_encoder_open_88,以解決編譯x264后,編譯ffmpeg 提示 libx264 not found.)
總結(jié)
以上是生活随笔為你收集整理的Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 函数中的指针分配的内存怎么释放
- 下一篇: Windows下静态链接库的使用