美文网首页ndk
FFmpeg-在Linux(CentOS)下编译FFmpeg

FFmpeg-在Linux(CentOS)下编译FFmpeg

作者: XII01 | 来源:发表于2019-12-01 11:26 被阅读0次
    • 编译环境
      1 .腾讯云 CentOS 7.5 64位
      2 .FFmpeg 4.0.2找我要资源
    • 第一步安装FFmpeg环境
      1 .yum install -y yasm
      2 .安装NDK环境下载地址不能打开就去官网下载
      mkdir NDK
      下载NDK
      wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
      解压
      unzip android-ndk-r17c-linux-x86_64
      配置环境变量
      vim /etc/profile
    NDKROOT=/root/NDK/android-ndk-r17c
    export PATH=$NDKROOT:$PATH
    

    重新加载资源
    source /etc/profile
    检测环境是否成功
    ndk-build

    NDK环境成功

    解压下载好的ffmpeg
    cd ffmpeg-4.0.2
    可以执行./configure试试,只能编译出在linux 环境运行的库
    下面来写一个编译android脚本vim build.sh

    #!/bin/bash
    NDK_ROOT=/root/ndk/android-ndk-r17c
    #TOOLCHAIN 变量指向ndk中的交叉编译gcc所在的目录
    TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/
    #FLAGS与INCLUDES变量 可以从AS ndk工程的.externativeBuild/cmake/debug/armeabi-v7a/build.ninja中拷贝,需要注意的是**地址**
    FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -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脚本,用于生成makefile
    #--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-v7a2
    ./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
    

    出现Android目录就代表成功


    FFMPEG编译成功

    相关文章

      网友评论

        本文标题:FFmpeg-在Linux(CentOS)下编译FFmpeg

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