FFmpeg 编译以及添加X264 支持 android

网上抄的一个脚本,一直提示:No working C compiler found.

在网上找了很久,把脚本的前后空格都删除了还是不行,后来看到可以查看日志 gedit config.log 看到

./configure: 行 158: /home/hong/Public/android-ndk-r14b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: 没有那个文件或目录

去查看目录 /home/hong/Public/android-ndk-r14b/toolchains/arm-linux-androideabi-4.8不存在,发现是ndk版本的问题,网上人家用的是ndk9,我用的是ndk14。修改为OOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9就正常了

修改后的脚本为:

#!/bin/bash
export  NDK=/home/hong/Public/android-ndk-r14b
export  SYSROOT=$NDK/platforms/android-21/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-static \
--enable-shared \
--enable-pic \
--disable-asm \
--enable-strip \
--host=arm-linux-androideabi \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS=""
build_one

 

先执行./build.sh

再 make -j4(或者 make)

再make install

使用的是最新的x264源码,生成的库文件就在源码下面android文件夹

正常来说,脚本只要修改ndk地址就可以了

这个作者的脚本也是能编译成功的

https://blog.csdn.net/qfanmingyiq/article/details/76944433

 

 

2

目前测试发现使用NDK16以上的版本编译不了FFmpeg,原因未知。

我使用的系统ubuntu18.04,先编译FFmpeg,成功之后再添加X264的库。

编译FFmpeg的脚本如下:

#!/bin/bash
#!/bin/bash
NDK=/home/hong/Public/android-ndk-r14b
SYSROOT=$NDK/platforms/android-21/arch-arm/
CPU=armv7-a
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "

function build_android
{
./configure \
--prefix=$PREFIX \
--enable-neon \
--enable-hwaccels \
--enable-shared \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--disable-static \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--enable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--cpu=armv7-a \
--enable-cross-compile \
--disable-gpl \
--disable-libx264 \
--enable-muxer=mp4 \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}
build_android

 

开始编译:

1、  ./build.sh

2、make -j4

3、make install

编译成功后,so库在FFmpeg文件夹下面的android文件夹下面

参考文章:

https://blog.csdn.net/bobcat_kay/article/details/80889398

之前编译4.0.1 出现过 : libavutil/libavutil-56.so:输入/输出错误,编译都完成了,就要生成so了。百度了很久都找不到问题,解决方法:FFmpeg源码放在了电脑的:G\FFmpeg\FFmpeg4.0.1 ,我的G盘是虚拟机的共享文件,虚拟机的路径是在mnt下面挂载的。把FFmpeg源码移到虚拟机的目录下面就成功了

 

编译成功:

 

下面继续研究,添加H264编码器

上一篇文章已经将x264编译成功,只要引入头文件和so库就可以编译成功,修改后的build.sh脚本如下:

#!/bin/bash
#!/bin/bash
NDK=/home/hong/Public/android-ndk-r14b
SYSROOT=$NDK/platforms/android-21/arch-arm/
CPU=armv7-a
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
PREFIX=$(pwd)/android/$CPU
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
function build_android
{
./configure \
--prefix=$PREFIX \
--enable-neon \
--enable-hwaccels \
--enable-shared \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--disable-static \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--enable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--cpu=armv7-a \
--enable-cross-compile \
--enable-gpl \
--enable-libx264 \
--enable-muxer=mp4 \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}
# x264头文件
ADDI_CFLAGS="-marm -I/home/hong/Public/x264-snapshot-20180821-2245/android/arm/include"
# x264so库
ADDI_LDFLAGS="-L/home/hong/Public/x264-snapshot-20180821-2245/android/arm/lib"
build_android
 

 

脚本修改的内容:

1、ADDI_CFLAGS="-marm" 改为  ADDI_CFLAGS="-marm -I/home/hong/Public/x264-snapshot-20180821-2245/android/arm/include" 这是上篇文章的编程成功x264头文件文件夹

2、添加 ADDI_LDFLAGS="-L/home/hong/Public/x264-snapshot-20180821-2245/android/arm/lib"  这是x264编译成功的so库文件夹

3、--enable-gpl \      --enable-libx264 \           开启264的编码器。

NDK  x264,FFmpeg源码路径截图如下:

 

编译成功的FFmpeg文件夹,截图如下

 

你可能感兴趣的:(C/C++,android-开发)