在成功編譯FFMpeg之后,調(diào)用某些FFMpeg的命令還需要用到libx264,因此需要額外編譯libx264并打包在FFMpeg中
成都創(chuàng)新互聯(lián)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì),成都品牌網(wǎng)站建設(shè),廣告投放等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10多年的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破成百上千家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.
1. 編譯環(huán)境:
Mac OS 10.9 XCode6.1
2. libx264的編譯
編譯包需要符合arm64、armv7s、armv7、x86_64、i386這幾個(gè)架構(gòu)。前面3個(gè)是給真機(jī)使用的,后面2個(gè)是給模擬器使用的。目前使用FFmpeg-iOS-build-script作者寫的一鍵編譯腳本只能編譯出適用于模擬器的.a包,適用于真機(jī)的包還需要自己手動(dòng)編譯。有時(shí)間可以研究它的編譯腳本源碼,添加上手動(dòng)編譯的代碼,這里先做一個(gè)總結(jié)。
(1)首先到http://www.videolan.org/developers/x264.html 下載最新的libx264源碼包,解壓之后是一個(gè)含snapshot-xxxx的一個(gè)文件夾,把它拷貝到隨便一個(gè)文件夾下,重命名為x264;
(2)到https://github.com/kewlbear/x264-ios 下載x264的一鍵編譯腳本文件,把它放到跟x264文件夾同級(jí)的地方;
(3)運(yùn)行腳本./build-x264.sh;
(4)腳本運(yùn)行完畢之后,會(huì)多出幾個(gè)文件夾:x264-iOS,scratch-x264,thin-x264。其中x264-iOS是最終的輸出,里面有include和lib兩個(gè)文件夾。lib文件夾里面只有*.a一個(gè)文件。如果順利的話,這個(gè)包是一個(gè)fat包,是包含了arm64、armv7s、armv7、x86_64、i386這幾個(gè)架構(gòu)的,但是在我的機(jī)器上,用lipo命令看,只有x86_64、i386這兩種架構(gòu),具體原因還沒有搞清楚。因此我們還需要手動(dòng)編譯arm64、armv7s、armv7的包,繼續(xù)下一步;
(5)再拷貝一份源碼出來,放到另外一個(gè)文件夾下,在命令行中進(jìn)入這個(gè)文件夾;
(6)編譯armv7的包:進(jìn)入源碼的文件夾后,在命令行中輸入
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
./configure --host=arm-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk
--prefix='build' --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system'
--enable-pic --extra-asflags='-arch armv7'
注意修改里面的iPhoneOS版本。
如果config成功,命令行會(huì)提示可以執(zhí)行make命令了,先不急著執(zhí)行make。手動(dòng)copy 一個(gè)新版的gas-preprocessor.pl到extras目錄下面。gas-preprocessor.pl我用的是https://git.libav.org/?p=gas-preprocessor.git;a=blob;f=gas-preprocessor.pl;h=44d11178667ece04df993e50023b41155d53582a;hb=HEAD 這個(gè)版本,源碼1033行,比x264的源碼要長很多。
復(fù)制完畢后,在命令行中執(zhí)行make;執(zhí)行完make之后再執(zhí)行make install,成功后會(huì)發(fā)現(xiàn)源碼文件夾里面多了一個(gè)libx264.a的包,用lipo查看,確實(shí)是armv7的架構(gòu),把它拷貝出來,重命名為libx264-armv7。
(7)編譯armv7s的包。先執(zhí)行下make clean,清除上一步執(zhí)行得到的結(jié)果。編譯armv7s的包與編譯armv7的步驟完全一致,只不過配置需要略微修改,且不需要再拷貝gas-preprocessor.pl文件。配置命令如下:
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
./configure --host=arm-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk
--prefix='build' --extra-cflags='-arch armv7s' --extra-ldflags='-arch armv7s -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system'
--enable-pic --extra-asflags='-arch armv7s'
同樣得到一個(gè)libx264.a的包,拷貝出來,重命名為libx264-armv7s。
(8)編譯arm64的包,方法同上,配置命令如下:
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
./configure --host=aarch74-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk
--prefix='build' --extra-cflags='-arch arm64' --extra-ldflags='-arch arm64
-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system' --enable-pic --extra-asflags='-arch arm64'
同樣得到一個(gè)libx264.a的包,拷貝出來,重命名為libx264-arm64。
(9)此時(shí)我們得到了*.a,libx264-armv7.a,libx264-armv7s.a,libx264-arm64.a四個(gè)文件,用lipo命令把他們?nèi)诤铣梢粋€(gè)包:
lipo -create *.a,libx264-armv7.a,libx264-armv7s.a,libx264-arm64.a -output libx264.a
把生成的libx264.a的包拷貝回x264-iOS/lib中,和include一起,整個(gè)x264-iOS當(dāng)做libx264的output
3. 編譯帶x264的ffmpeg包
拷貝x264-iOS到build-ffmpeg.sh腳本所在目錄下,并重命名x264-iOS為fat-x264,清除build-ffmpeg.sh腳本中X264=`pwd`/fat-x264一行的注釋,保存后執(zhí)行腳本,順利的話就會(huì)跟之前一樣生成各個(gè)包啦。。相比之前,會(huì)多出一個(gè)libpostproc.a。
4. 在項(xiàng)目中使用帶x264的ffmpeg以及l(fā)ibx264
如果直接替換掉原來的FFMPEG .a庫,會(huì)報(bào)編譯錯(cuò)誤。此時(shí)需要加上libx264。把x264-iOS(含頭文件和.a)拖到項(xiàng)目中,link framework中加入libx264,user header search path中加入x264-iOS/include的路徑,運(yùn)行就可以了。
網(wǎng)頁題目:調(diào)用某些FFMpeg的命令
鏈接URL:http://jinyejixie.com/article6/jdojig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、做網(wǎng)站、服務(wù)器托管、ChatGPT、網(wǎng)站策劃、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)