分享

一分钟编译ffmpeg4.2.2并移植到Android添加https和硬编码

 mediatv 2020-03-24

Android 编译FFmpeg 添加硬编码  和https

码字不易,转载请注明出处!

我们编译FFmpeg一般在Linux的系统上进行编译(当然在WIN上也是可以的加上VM虚拟机安装linux)

FFmpeg官网下载,直接DownLoad即可(文档编辑时版本 ffmpeg-4.2.2)

编译环境Ubuntu 19.10   重点NDK20b  采用 CLANG 则是一个效率更高的C/C++编译工具,并且兼容GCC,Google在很早以前就开始建议使用clang进行编译,并且在 ndk 17 以后,把 GCC 移除了,全面推行使用 CLANG

在 ffmpeg-4.2.2 根目录下新建 shell 脚本,命名为:build_android.sh 创建build_andorid.sh 并授予权限sudo  chmod   777  build_android.sh 

讲已下代码复制到所创建的文件中

#!/bin/bash

# 清空上次的编译

make clean

#你自己的NDK路径.

export NDK=/home/tt/android-ndk-r20b-linux-x86_64/android-ndk-r20b

TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/

API=29

function build_android

{

echo "Compiling FFmpeg for $CPU"

./configure \

    --prefix=$PREFIX \

    --enable-neon \

    --enable-hwaccels \

    --enable-gpl \

    --enable-postproc \

    --enable-shared \

    --enable-jni \

    --enable-mediacodec \

    --enable-decoder=h264_mediacodec \

    --disable-decoders \

    --enable-decoder=aac \

    --enable-decoder=aac_latm \

    --enable-decoder=mjpeg \

    --enable-decoder=png \

    --enable-decoder=mpeg4_mediacodec \

    --disable-static \

    --disable-doc \

    --enable-ffmpeg \

    --disable-ffplay \

    --disable-ffprobe \

    --enable-avdevice \

    --disable-doc \

    --disable-symver \

    --cross-prefix=$CROSS_PREFIX \

    --target-os=android \

    --arch=$ARCH \

    --cpu=$CPU \

    --cc=$CC

    --cxx=$CXX

    --enable-cross-compile \

    --sysroot=$SYSROOT \

    --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \

    --extra-ldflags="$ADDI_LDFLAGS" \

    $ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

echo "The Compilation of FFmpeg for $CPU is completed"

}

#armv8-a

ARCH=arm64

CPU=armv8-a

CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang

CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++

SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot

CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=$CPU"

build_android

#armv7-a

ARCH=arm

CPU=armv7-a

CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang

CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++

SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot

CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "

build_android

#x86

ARCH=x86

CPU=x86

CC=$TOOLCHAIN/bin/i686-linux-android$API-clang

CXX=$TOOLCHAIN/bin/i686-linux-android$API-clang++

SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot

CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"

build_android

#x86_64

ARCH=x86_64

CPU=x86-64

CC=$TOOLCHAIN/bin/x86_64-linux-android$API-clang

CXX=$TOOLCHAIN/bin/x86_64-linux-android$API-clang++

SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot

CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"

build_android

保存等待直接 运行./build_android.sh  

然后一步编译成功!

后续移植到Android studio 项目中会发出来  目前可以参考移植部分就可以了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多