FFmpeg 編譯(2)--單一版

寫在前面的廢話

接上一篇,介紹了如何編譯出多個so文件。本片介紹如何編譯出單一的so文件。網(wǎng)上對于編譯出單一庫文件大致分為兩種方式:
1、利用NDK 環(huán)境,編寫mk文件生成
2、先編譯出FFmpeg模塊的庫文件,然后鏈接模塊的庫文件
對于以上兩種方式,筆者更傾向于第二種,所以,這里重點介紹第二種,感興趣的話可自行測試第一種,這里給出鏈接:
http://blog.csdn.net/huahuahailang/article/details/27374219
廢話到此,言歸正傳

1、先貼出sh文件
# build_andorid.sh

NDK=xxx/android-ndk-r10e
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64

function build_one
{
    ./configure \
        --prefix=$PREFIX \
        --enable-neon \
        --enable-hwaccel=h264_vaapi \
        --enable-hwaccel=h264_vaapi \
        --enable-hwaccel=h264_dxva2 \
        --enable-hwaccel=mpeg4_vaapi \
        --enable-hwaccels \
        --enable-static \
        --enable-jni \
        --enable-mediacodec \
        --enable-asm \
        --disable-shared \
        --disable-doc \
        --disable-ffmpeg \
        --disable-ffplay \
        --disable-ffprobe \
        --disable-ffserver \
        --disable-avdevice \
        --disable-doc \
        --disable-symver \
        --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
        --target-os=linux \
        --arch=arm \
        --enable-cross-compile \
        --sysroot=$SYSROOT \
        --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
        --extra-ldflags="$ADDI_LDFLAGS" \
        $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make -j4
    make install

    $TOOLCHAIN/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
    $TOOLCHAIN/bin/arm-linux-androideabi-ld -rpath-link=$SYSROOT/usr/lib -L$SYSROOT/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libavfilter/libavfilter.a libswscale/libswscale.a libavdevice/libavdevice.a libswresample/libswresample.a -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
}
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one

筆者通過這種方式編譯出來之后,生成的libffmpeg.so文件大小是70多兆,相比于多個模塊的多個so文件要大很多

2、鳴謝

本文參考鏈接:
http://blog.csdn.net/feixiang_john/article/details/7894188

只是改動了幾處

  • 添加硬件解碼
  • -z,noexecstack 修改為 -z noexecstack
  • 刪除--warn-once

ps:在NDK 9之后,以上兩個命令有所改變,第一個要把“,”替換為空格,第二個沒有找到替換的東西,所有筆者就給刪除了

到此,F(xiàn)Fmpeng的編譯工作結(jié)束。

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

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

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