wince版本ffmpeg的編譯 終篇 (續)

 6. 編譯ffmpeg,鏈接libx264,libfaac,libfaad

確保libx264,libfaac,libfaad都是靜態庫

Ffmpeg編譯會出現很多問題,我們首先從配置configure文件開始

#cd ffmpeg

#./configure \

--enable-memalign-hack \

--target-os=mingw32ce \

--arch=arm \

--enable-cross-compile \

--prefix=/wm \

--extra-cflags=-I/wm/include \

--extra-ldflags=-L/wm/lib \

--cross-prefix=arm-mingw32ce- \

--enable-small \

--enable-gpl \

--enable-shared \

--disable-static \

--disable-mmx \

--disable-zlib \

--disable-ipv6 \

--disable-debug \

--disable-ffmpeg \

--disable-ffserver \

--disable-ffplay \

--disable-vhook \

--disable-encoders \

--disable-network \

--disable-muxers \

--disable-decoders \

--disable-filters \

--disable-demuxers \

--disable-devices \

--disable-protocols \

--disable-bsfs \

--disable-parsers \

--enable-libfaac \

--enable-encoder=libfaac \

--enable-libfaad \

--enable-decoder=libfaad \

--enable-libx264 \

--enable-encoder=libx264 \

--enable-decoder=h264 \

--extra-cflags="-march=armv4 -mtune=xscale"

由於命令過長,可以寫一個shell腳本,然後把這些貼過去

此時,大部分都會出現libx264 not found錯誤

解決方法:

打開configure文件,找到"enable libx264 && require llibx264 x264.h x264_encoder_open -lx264 -lm"這一行,改爲"enabled libx264    && require2 libx264 "stdint.h x264.h" x264_encoder_open_84 -lx264 -lm",有的ffmpeg中不是x264_encoder_open而是x264_encoder_init,照樣可以這樣更改。

#cd libavutil

#make

這裏面不會有錯誤,但是請注意:

如果在cygwin中導入了微軟提供的lib命令,你注意看命令行就會發現有問題:

Lib /MACHINE:i386 /DEF:libavutil-49.def /OUT:libavutil-49.lib

注意到了沒:i386

我們是要放到手機上運行了,所以最起碼得是arm

所以我們自己手動輸入如下命令:

Lib /MACHINE:arm /DEF:libavutil-49.def /OUT:libavutil-49.lib

#make install

#cd libavcodec

#make

這裏會出現錯誤,一般都是文件後綴爲.s的文件,可悲的是,我對彙編感冒,只能到網上求助,不過幸好有解決方法:

打開出錯的文件,將所有的func替換爲.global,註釋掉endfunc,再次編譯,出現新的錯誤,然後根據錯誤提示的行數,註釋掉!

#make install

#cd libavformat

#make

#make install

這個format太好了,什麼錯誤都沒有

從此可以運行在wince上的ffmpeg包括libx264,libaac,libaad編譯完成,可以運行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章