FFmpeg 編譯(4)--添加視頻編碼庫(kù)(xh264)

首先分享兩個(gè)鏈接:

第一個(gè)鏈接是一個(gè)大神(這里給出大神的GitHub主頁(yè)https://github.com/yesimroy) 用英文寫的編譯文章。
第二個(gè)鏈接是這個(gè)大神在Github上公開(kāi)的編譯腳步文件。在這里膜拜和感謝一下大神。

有了第一個(gè)鏈接之后,我在考慮自己還要不要重新寫一遍,反正我寫的也不一定有大神寫的好,但是呢,為了記錄一下自己的編譯過(guò)程,還說(shuō)寫一寫吧。

1、下載xh264

點(diǎn)擊下載x264
把大神的編譯腳步拷貝到x264的根目錄下,為了方便,我這里只拿arm版本來(lái)說(shuō),修改NDK、SYSROOT、PREBUILT路徑為你自己的

 export NDK=/Users/xxxx/Library/Android/android-ndk-r10e
 export SYSROOT=$NDK/platforms/android-9/arch-arm/
 export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt

function build_one
 {
 ./configure \
 --prefix=$PREFIX \
 --host=arm-linux \
 --enable-pic \
 --enable-static \
  --disable-cli \
 --cross-prefix=$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi- \
 --sysroot=$SYSROOT
 make clean
 make
 make install
 }
 
PREFIX=$(pwd)/android/ 
ADDI_CFLAGS="-marm"
 build_one

然后執(zhí)行腳本,執(zhí)行完成之后,會(huì)在xh264點(diǎn)根目錄下生成一個(gè)android目錄

屏幕快照 2016-09-08 15.42.19.png

這里是我編譯出來(lái)的文件,我編譯了兩個(gè)平臺(tái)的,arm和arm64

2、編譯帶有xh264的FFmpeg
#!/bin/sh
export NDK=/Users/xxx/Library/Android/android-ndk-r10e
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
export PLATFORM=$NDK/platforms/android-9/arch-arm
export PREFIX=/Users/xxx/ndkLibs/x264/android

build_one(){
./configure \
--target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-nonfree \
--enable-shared \
--disable-static \
--disable-everything \
--enable-gpl \
--disable-doc \
--enable-avresample \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--disable-ffplay \
--disable-ffserver \
--enable-ffmpeg \
--disable-ffprobe \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-hwaccels \
--enable-zlib \
--disable-devices \
--disable-avdevice \
--extra-cflags="$ADDI_CFLAGS -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \
--extra-ldflags="$ADDI_LDFLAGS"

make clean
make -j4 install


#$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o

#$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libavresample/libavresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lx264 --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
}


ADDI_CFLAGS="-I/Users/xxxx/ndkLibs/x264/android/include"
ADDI_LDFLAGS="-L/Users/xxxx/ndkLibs/x264/android/lib"

build_one

執(zhí)行上面的腳本,不出意外,就可以編譯出我們想要的文件了。到這里,F(xiàn)Fmpeg的編譯系列就到此結(jié)束了。寫的不好的地方,請(qǐng)各位見(jiàn)諒和指正。再次謝謝大家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容