142407fmz0fv77avxvr1mm  
 
提示:如果不了解什麼是ffmepg,請移步HTTP://ffmpeg.org 先瞭解一下。

編譯ffmepg模擬器版本:

先將gas-preprocessor.pl拷貝到/usr/sbin/目錄中。
到ffmpeg官網上下載ffmpeg源碼
在終端下定位到ffmpeg的目錄運行
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-avfilter --disable-debug --disable-encoders --enable-cross-compile --disable-decoders --disable-armv5te --enable-decoder=h264 --enable-pic --cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc' --extra-ldflags=-L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/system --sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk --target-os=darwin --arch=i386 --cpu=i386 --extra-cflags='-arch i386' --extra-ldflags='-arch i386'
輸入make命令
將libavcodec.a,libavdevice.a,libavformat.a,libavutil.a,libswscale.a到對應的目錄下拷貝出來。
在專案中就可以使用了。可以參考開源示例iFrameExtractor (git clone git://github.com/lajos/iFrameExtractor.git)需要將該專案的ffmpeg資料夾庫替換為你編譯的ffmpeg源碼資料夾,在ffmpeg目錄下新建lib目錄,將剛剛拷貝出來的靜態程式庫拷貝進去。打開專案,添加libbz2.1.0.dylib系統庫檔。點擊編譯運行就可以使用了。
注意如果使用的是ffmpeg0.8.5的庫的話iFrameExtractor中的codec_type需要修改為AVMEDIA_TYPE_VIDEO。


編譯arm7版本,網上搜到的版本,完全按照以下步驟做就行了。可以編譯出arm7的庫。
1. 下載:
git clone git://github.com/lajos/iFrameExtractor.git
2. 編輯:
build_armv6和build_armv7,修改./configure後面的參數,主要是SDK版本.我的是4.3,修改為:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=arm1176jzf-s --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6'

3. 編譯:
出錯,提示:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc is unable to create an executable file.
C compiler test failed.
查看config.err檔,最後提示:
ld: file not found: /usr/lib/system/libcache.dylib for architecture armv7
collect2: ld returned 1 exit status
 
4. 重新修改configure參數為:
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk' --enable-pic
 
5. 編譯:
build_armv7
最後生成靜態程式庫,在lib目錄和armv7目錄.
 
6.用xcode打開iFrameExtractor.xcodeproj,現在編譯會出錯,需要修改幾個地方:
左邊選中工程,中間選中target,右面選中Build settings,在Architectures選項卡裡面選擇Architetures為Optimized(armv7),Base SDK為Latest iOS(iOS 4.3) Valid Architectures填寫armv7.
編譯目標選擇iOS Device,當然,如果有連接電腦的設備,可以選擇設備.
編譯,提示:
Undefined symbols for architecture armv7:
"_BZ2_bzDecompressInit", referenced from:
_matroska_decode_buffer in libavformat.a(matroskadec.o)
"_BZ2_bzDecompressEnd", referenced from:
_matroska_decode_buffer in libavformat.a(matroskadec.o)
"_BZ2_bzDecompress", referenced from:
_matroska_decode_buffer in libavformat.a(matroskadec.o)

添加庫libbz2.1.0.dylib,再次編譯,OK通過

 

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()