Android编译FFmpeg4.0.2添加H264编码(FFmpeg编译二)

目前测试发现使用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源码移到虚拟机的目录下面就成功了

Android编译FFmpeg4.0.2添加H264编码(FFmpeg编译二)_第1张图片

 

编译成功:

Android编译FFmpeg4.0.2添加H264编码(FFmpeg编译二)_第2张图片

 

下面继续研究,添加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源码路径截图如下:

Android编译FFmpeg4.0.2添加H264编码(FFmpeg编译二)_第3张图片

 

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

Android编译FFmpeg4.0.2添加H264编码(FFmpeg编译二)_第4张图片

 

下一篇文章,使用ndk编译freetype字体,因为目前编译成功的FFmpeg没有字体库,不能使用FFmpeg的向视频添加字幕,文字的功能。

你可能感兴趣的:(android,ndk,X264,FFmpeg)