美文网首页
FFmpeg4.2.1编译脚本

FFmpeg4.2.1编译脚本

作者: T_Carbon | 来源:发表于2019-11-19 11:11 被阅读0次

    API = 21

    #!/bin/bash
    NDK_ROOT=/Users/wangtao/Library/Android/android-ndk-r17c
    #TOOLCHAIN 变量指向ndk中的交叉编译gcc所在的目录
    TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/
    
    ANDROID_API=21
    
    #FLAGS与INCLUDES变量 可以从AS ndk工程的.externativeBuild/cmake/debug/armeabi-v7a/build.ninja中拷贝,需要注意的是**地址**
    FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=$ANDROID_API -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -O0 -fPIC" 
    INCLUDES="-isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++/include -isystem $NDK_ROOT/sources/android/support/include -isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include"
    
    #执行configure脚本,用于生成maskefile
    #--prefix : 安装目录
    #--enable-small : 优化大小
    #--disable-programs : 不编译ffmpeg程序(命令行工具),我们是需要获得静态(动态)库。
    #--disable-avdevice : 关闭avdevice模块,此模块在android中无用
    #--disable-encoders : 关闭所有编码器 (播放不需要编码)
    #--disable-muxers :  关闭所有复用器(封装器),不需要生成mp4这样的文件,所以关闭
    #--disable-filters :关闭视频滤镜
    #--enable-cross-compile : 开启交叉编译(ffmpeg比较**跨平台**,并不是所有库都有这么happy的选项 )
    #--cross-prefix: 看右边的值应该就知道是干嘛的,gcc的前缀 xxx/xxx/xxx-gcc 则给xxx/xxx/xxx-
    #disable-shared enable-static 不写也可以,默认就是这样的。
    #--sysroot: 
    #--extra-cflags: 会传给gcc的参数
    #--arch --target-os :
    PREFIX=./android/armeabi-v7a
    ./configure \
    --prefix=$PREFIX \
    --prefix=$PREFIX \
    --enable-small \
    --disable-programs \
    --disable-avdevice \
    --disable-encoders \
    --disable-muxers \
    --disable-filters \
    --enable-cross-compile \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --disable-shared \
    --enable-static \
    --sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
    --extra-cflags="$FLAGS $INCLUDES" \
    --extra-cflags="-isysroot $NDK_ROOT/sysroot" \
    --arch=arm \
    --target-os=android 
    
    make clean
    make install
    

    API = 17

    首先将configure中的4209行注释掉

    # set_default target_os
    # if test "$target_os" = android; then
    #     cc_default="clang"
    # fi
    

    脚本信息

    #!/bin/bash
    
    # mac下编译ffmpeg
    
    #NDK_ROOT 变量指向ndk目录
    NDK_ROOT=/Users/wangtao/Library/Android/android-ndk-r17c
    #TOOLCHAIN 变量指向ndk中的交叉编译gcc所在的目录
    TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64  ## mac下是/darwin-x86_64
    
    #指定android api版本
    ANDROID_API=17
    
    #此变量用于编译完成之后的库与头文件存放在哪个目录
    PREFIX=./android/armeabi-v7a
    
    #执行configure脚本,用于生成makefile
    #--prefix : 安装目录
    #--enable-small : 优化大小
    #--disable-programs : 不编译ffmpeg程序(命令行工具),我们是需要获得静态(动态)库。
    #--disable-avdevice : 关闭avdevice模块,此模块在android中无用
    #--disable-encoders : 关闭所有编码器 (播放不需要编码)
    #--disable-muxers :  关闭所有复用器(封装器),不需要生成mp4这样的文件,所以关闭
    #--disable-filters :关闭视频滤镜
    #--enable-cross-compile : 开启交叉编译
    #--cross-prefix: gcc的前缀 xxx/xxx/xxx-gcc 则给xxx/xxx/xxx-
    #disable-shared enable-static 不写也可以,默认就是这样的。
    #--sysroot: 
    #--extra-cflags: 会传给gcc的参数
    #--arch --target-os : 必须要给
    ./configure \
    --prefix=$PREFIX \
    --enable-small \
    --disable-programs \
    --disable-avdevice \
    --disable-encoders \
    --disable-muxers \
    --disable-filters \
    --enable-cross-compile \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --disable-shared \
    --enable-static \
    --sysroot=$NDK_ROOT/platforms/android-$ANDROID_API/arch-arm \
    --extra-cflags="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=$ANDROID_API -U_FILE_OFFSET_BITS  -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC" \
    --arch=arm \
    --target-os=android
    
    #上面运行脚本生成makefile之后,使用make执行脚本
    make clean
    make install
    

    相关文章

      网友评论

          本文标题:FFmpeg4.2.1编译脚本

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