日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg 配置与编译

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg 配置与编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文標簽(Tag)

ffmpeg 配置 編譯

1 ffmpeg介紹
?? ffmpeg是音視頻的分離,轉換,編碼解碼及流媒體的完全解決方案,其中最重要的就是libavcodec庫。它被mplayer或者xine使用作為×××。還有,國內比較流行的播放器影音風暴或MyMPC的后端ffdshow也是使用ffmpeg的解碼庫的。
?
??? ffmpeg軟件包經編譯過后將生成三個可執行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用于對媒體文件進行處理,ffserver是一個http的流媒體服務器,ffplay是一個基于SDL的簡單播放器。
?
??? ffmpeg 中有五個庫文件,libavcodec,libavformat,libavutil,libswscale,libpostproc,其中庫 libavcodec,libavformat用于對媒體文件進行處理,如格式的轉換;libavutil是一個通用的小型函數庫,該庫中實現了CRC校驗碼的產生,128位整數數學,最大公約數,整數開方,整數取對數,內存分配,大端小端格式的轉換等功能;libswscale,libpostproc 暫時不知道何用。
?
2 ffmpeg下載
??? 最新的ffmpeg可以通過svn下載,SVN輔助的軟件有:
??? SubVersion,從 http://subversion.tigris.org/ 下載,支持linux。
??? TortoiseSVN,從 http://tortoisesvn.tigris.org/ 下載,是很不錯的SVN客戶端程序,為windows外殼程序集成到windows資源管理器和文件管理系統的Subversion客戶端,用起來很方便。
?
??? subversion安裝,記住最好之前裝過apr和apr-util,在apache.org網站能下到
??? wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
??? tar zvxf subversion-1.3.2.tar.gz
??? cd subversion-1.3.2
??? ./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
??? make
??? make install
??? 如果安裝了FC6,它已經帶了svn,不用裝了。
?
??? ffmpeg的下載:我們就可以通過svn命令獲取最新的ffmpeg,命令如下:
??? svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
?
3 ffmpeg支持庫的安裝
* xvid
??? xvid的獲取地址如下: http://www.xvid.org/
??? wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
??? 配置編譯
??? for x86
?#./configure --prefix=/usr/local
?#make
?#make install
??? for arm
?#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/arm-linux --build=i686-pc-linux --host=arm-linux --target=arm-linux
?#make
?#make install
?
* x264
??? x264的獲取地址如下: svn co svn://svn.videolan.org/x264/trunk x264
??? 配置編譯
??? for x86
?#./configure --enable-shared --prefix=/usr/local
?#make
?#make install
??? for arm
?#CC=arm-linux-gcc ./configure --enable-pthread --enable-shared --host=arm-linux --prefix=/usr/local/arm/arm-linux
?#make
?#make install
?
* 支持mp3
??? lame的獲取地址如下: http://lame.sourceforge.net/index.php
??? 配置編譯
??? for x86
?./configure --enable-shared --prefix=/usr/local
?
* 支持Ogg Vorbis:
?
* AC3和dts編碼的支持
??? libdts編譯參數
./configure --prefix=/usr
make
make install
?
* mpg4 aac格式支持,
??? 如果ffserver服務器還針對手機用戶服務,所以,類似aac,mpg4鈴聲格式的支持,我們也得做。這里我們安裝faad2和faac就行,下載請到http://www.audiocoding.com/modules/mydownloads/http://prdownloads.sourceforge.net/faac
??? FAAD2的編譯
cd faad2
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
??? faac的編譯
cd faac
chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
??? 在編譯ffmpeg,在configure時加上--enable-amr_nb --enable-faad --enable-faac參數。
?
* 支持3gp格式,
??? 這也是現在好多手機支持的格式,所以也得支持編譯, 編譯的時候加上--enable-amr_nb --enable-amr_wb參數就行,根據編譯系統的提示,所以我們得下載一些編譯3gp所需得文件。
源碼網址:http://www.3gpp.org/ftp/Specs
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amrwb_float
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amr_float
?
* ffmpeg支持VC1格式
??? 微軟ASF格式的三個版本,WMV1,WMV2,WMV3分別對應MediaPlayer的版本7,8和9,所以很多時候會稱VC1為WMV3或WMV9,都是它了,有時候在代碼里,也能看到稱呼它為VC9的。因為微軟還沒有正式公開這種格式,所以當前對VC1的支持還很不完善。本文基本是根據 Multimedia Mike 的一篇博客翻譯和完善而來。
??? (1) 首先要下載 SMPTE VC-1 reference decoder,這個組織是要收費的,可以從這里下載免費的。
??? (2) 在ffmpeg目錄下的libavcodec目錄下面,建立目錄libvc1。
??? (3) 將VC1_reference_decoder_release6/decoder/目錄中的*.c和*.h文件全部copy到libvc1目錄下。
??? (4) 將VC1_reference_decoder_release6/shared/目錄中的*.c和*.h文件全部copy到libvc1目錄下。
??? (5) 將 libvc1-makefile.txt放到libvc1下的Makefile文件。
??? (6) 將smpte-vc1.c文件放到libavcodec目錄下。
??? (7) 修改libavcodec目錄下的vc9.c,將文件最后的wmv3_decoder這個AVCodec的structure,用#if 0和#endif包含起來,也就是使它失效了。
??? (8) 修改libavcodec目錄下的allcodecs.c,將register_avcodec(&wmv3_decoder)上下的注釋去掉,使它發揮作用。
??? (9) 修改libavcodec目錄下的Makefile,把OBJS的列表中加入smpte-vc1.o。
??? (10)修改ffmpeg主目錄下的Makefile文件,把-L./libavcodec/libvc1 -lvc1$(BUILDSUF)加入到FFLIBS后面。
??? (11) 進入ffmpeg/libavcodec/libav1,執行make
??? (12) 到ffmpeg主目錄下,執行config;make;make install。config時根據實際情況帶參數。
?
* 采用ffmpeg轉碼制作FLV文件的方法
??? 采用ffmpeg轉碼制作FLV文件,和轉碼成其它媒體類型的重要差別是一定要有lame庫支持,因為FLV的聲音編碼采用mp3格式,非lame這個東東不行。編譯ffmpeg中加入lame庫真是一場災難,特別在windows下,很多參數都不能發揮作用,最后直接手工copy和改一些文件,記錄如下:
??? (1) 如果在Windows下編譯,第一步當然是下載MinGW和MSYS來裝上了。到http://mingw.sourceforge.net/去下載最新版的MinGW-5.0.2.exe和MSYS-1.0.11-2004.04.30-1.exe。
??? (2) 先安裝MinGW,直接運行MinGW-5.0.2.exe安裝,選擇目錄,譬如選擇D:\MinGW為安裝目錄。安裝時需要選擇gcc和make模塊,安裝文件本身很小,會從網上下載模塊來安裝。
??? (3) 然后安裝MSYS,也是直接運行MSYS-1.0.11-2004.04.30-1.exe安裝。安裝目錄一般選擇D:\MinGW\bin \1.0。,安裝過程會詢問剛才安裝MinGW的目錄,輸入D:\MinGW,其它都回答'Y'就搞定了。如果不清楚,可以看這個圖片效果。
??? (4) 運行MSYS,桌面上有個圖標,雙擊就運行了,運行結果是一個模擬unix的命令窗口,后面的編譯都在這種狀態下進行。前面4步在linux不需要。
??? (5) 到http://lame.sourceforge.net/去下載最新版的lame-3.97b2.tar.gz,copy到你認為合適的地方,解壓后進入lame解壓出來的目錄中。執行
??????? ./configure --prefix=PREFIX
??????? make
??????? make install
??? (6) 就把編譯出來的include下的lame目錄copy到/usr/include目錄下,把lib下的幾個庫文件都copy到/usr/lib目錄下。這里注意有個變化,如果只copy lib目錄下的靜態庫到/usr/lib下,就是只copy libmp3lame.a文件,編譯出來的ffmpeg最終就不會對libmp3lame的動態庫有依賴關系,這是因為編譯首先找動態庫,動態庫沒有才找靜態庫。如果不做這個copy,后面編譯ffmpeg時無論如何指定參數,都會報錯LAME not found,不知道是哪里的bug。
??? (7) 從http://ffmpeg.mplayerhq.hu/取得最新的ffmpeg,現在自由軟件都大量采用SVN了,要先裝一個SVN,可以去http://tortoisesvn.tigris.org/下載windows版的SVN,去http://subversion.tigris.org/下載linux版的SVN。SVN如何編譯安裝這里就省略了。
??? (8) 如果在windows下,打開解壓后的ffmpeg目錄下的Makefile文件,在FFLIBS的那一行后面加上-lmp3lame$(BUILDSUF)。這個也不知道是哪個bug引起的,搞了好長時間才搞出來,郁悶。Linux下不用這樣。
?
4 ffmpeg的編譯
?
??? 配置編譯
??? for x86
#./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-faadbin --enable-dts --enable-pp --enable-faad --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
?
補充1:
關于3gp的編譯,如果大家要編譯--enable-amr_nb-fixed,那就不能跟--enable-amr_nb同時編譯,我不大清楚這兩者到底有什么區別,似乎fixed是修正版,管他呢,編譯的方法:
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amr目錄下
?
修改libavcodec/amr/makefile 找到CFLAGS = -Wall -pedantic-errors -I. $(CFLAGS_$(MODE)) -D$(VAD) 換成CFLAGS = -Wall -I.
?
$(CFLAGS_$(MODE)) -D$(VAD) -DMMS_IO
?
整體編譯參數就是
#./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb-fixed --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-dts --enable-pp --enable-faad --enable-faadbin --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
?
?for x86的簡易配置
#./configure --prefix=./install --disable-shared --enable-pthreads --enable-libx264 --enable-libxvid --arch=i686 --enable-gpl
#make
#make install
?
??? for arm
??? 配置編譯
#./configure --prefix=/home/zht/redhatzht/sources/image-colletct/ffmpeg/install --enable-static --disable-shared --enable-libx264 --enable-libxvid --cross-compile --cc=arm-linux-gcc --arch=arm --enable-gpl --disable-strip --disable-network --disable-ipv6 --disable-vhook --disable-audio-beos --disable-audio-oss --disable-mpegaudio-hp? --enable-pthreads --enable-small --disable-parsers --disable-debug
#make
#make install
?
注意:
?
(1)“/home/zht/redhatzht/sources/image-colletct/ffmpeg”為ffmpeg源碼所在目錄。
(2)“/usr/local/arm”為arm-linux-gcc交叉編譯器所在目錄。
(3) 如果庫文件安裝在/usr/local/lib目錄中導致配置失敗,可以在/etc/ld.so.conf文件中添加/usr/local/lib目錄,然后執行#ldconfig。
??? x86上的ldconfig不能在arm上運行,arm上的ldconfig工具是在建立交叉編譯器時,編譯glibc是產生的,可以拷貝到arm-linux中。
(4) 本文大部分內容來自網絡,其中xvid,x264的庫,我親手安裝過,ffmpeg的配置編譯for x86的簡易配置,for arm,我親手配置編譯過,并在x86,arm上可用,編譯配置都是采用靜態庫。

轉載于:https://blog.51cto.com/prothesman/1411477

總結

以上是生活随笔為你收集整理的ffmpeg 配置与编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。