参考文章
https://blog.youkuaiyun.com/leixiaohua1020/article/details/47008825 雷霄骅
1. 编译环境
-
NDK:android-ndk-r15c
-
FFMPEG: ffmpeg-3.4.4
-
Android P: 21(该环境限制最少21)
-
Ubuntu:18.0.1
-
部分安装库
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \ libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
2. 下载ffmpeg到本地,配置编译脚本
-
下载到本地,官网:http://ffmpeg.org/
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg
-
修改configure文件,方便自动导出熟悉的文件名称
#修改前,方便.so库自动生成我们熟知的命名 #SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' #SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' #LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' #SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' #SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' #修改后, SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'
-
arm编译脚本如下,替换下面编译平台NDK目录成你自己的
#!/bin/bash make clean export NDK=/home/felix/wd500g/android-sdk/android-ndk-r14b export SYSROOT=$NDK/platforms/android-21/arch-arm/ export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 export CPU=arm export ARCH=arm export PREFIX=$(pwd)/android/$CPU export ADDI_CFLAGS="-marm" ./configure --target-os=linux \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-x86asm \ --arch=arm \ --disable-doc \ --disable-symver \ --enable-gpl \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_CFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install
3. 问题修复(限于该环境配置):
- 将libavcodec/opus_pvq.c文件的变量B0改成b0
- 将libavcodec/hevc_mvs.c文件的变量B0改成b0,xB0改成xb0,yB0改成yb0
- 将libavcodec/aaccoder.c文件B0变量替换成b