美文网首页FFmpegFFmpegAndroid开发
FFmpeg 编译(4)--添加视频编码库(xh264)

FFmpeg 编译(4)--添加视频编码库(xh264)

作者: esonyf | 来源:发表于2016-09-08 15:56 被阅读585次

    首先分享两个链接:

    第一个链接是一个大神(这里给出大神的GitHub主页https://github.com/yesimroy) 用英文写的编译文章。
    第二个链接是这个大神在Github上公开的编译脚步文件。在这里膜拜和感谢一下大神。

    有了第一个链接之后,我在考虑自己还要不要重新写一遍,反正我写的也不一定有大神写的好,但是呢,为了记录一下自己的编译过程,还说写一写吧。

    1、下载xh264

    点击下载x264
    把大神的编译脚步拷贝到x264的根目录下,为了方便,我这里只拿arm版本来说,修改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
    
    

    然后执行脚本,执行完成之后,会在xh264点根目录下生成一个android目录

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

    这里是我编译出来的文件,我编译了两个平台的,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
    

    执行上面的脚本,不出意外,就可以编译出我们想要的文件了。到这里,FFmpeg的编译系列就到此结束了。写的不好的地方,请各位见谅和指正。再次谢谢大家!

    相关文章

      网友评论

      • 4743f0fa658f:博主,我用你的脚本在linu里面编译不起,NDK用的r12b,可以帮忙一下吗

      本文标题:FFmpeg 编译(4)--添加视频编码库(xh264)

      本文链接:https://www.haomeiwen.com/subject/jbbsettx.html