参考这两篇博文来编译x86和armeabi-v7a的so文件,重新了解ffmpeg的编译过程。

先修改configure文件

#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)'# For androidSLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'SLIB_INSTALL_LINKS='$(SLIBNAME)

初始脚本编写参考
https://blog.csdn.net/bobcat_kay/article/details/80889398
其他CPU平台的编译脚本编写
https://blog.csdn.net/yuxiatongzhi/article/details/80096802

我在学习Android视频编码和直播推流的课程,下载了博主提供的demo,但是提示我r17不支持armeabi的平台,已经删了对这个平台的支持。于是想自己编译,结果一直到凌晨两点也没解决。

最后,只能使用博文指出的方法,用和博文相对应的版本来编译,所以我的版本就是:
FFmpeg 4.0.3和Android NDK r14b,不过我想NDK再高几个版本也是可以的。

脚本:

#!/bin/bashNDK=/home/luxuan/android-ndk-r14bfunction 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-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 \    --enable-cross-compile \    --sysroot=$SYSROOT \    --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \    --extra-ldflags="$ADDI_LDFLAGS" \    $ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake installecho "The Compilation of FFmpeg for $CPU is completed"}#armv8-aARCH=arm64CPU=armv8-aTOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64SYSROOT=$NDK/platforms/android-21/arch-$ARCH/CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=$CPU"build_android#armv7-aARCH=armCPU=armv7-aTOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64SYSROOT=$NDK/platforms/android-21/arch-$ARCH/CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "build_android#x86ARCH=x86CPU=x86TOOLCHAIN=$NDK/toolchains/x86-4.9/prebuilt/linux-x86_64SYSROOT=$NDK/platforms/android-21/arch-$ARCH/CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"build_android#x86_64ARCH=x86_64CPU=x86-64TOOLCHAIN=$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64SYSROOT=$NDK/platforms/android-21/arch-$ARCH/CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"build_android

更新一下:

现在将FFmpeg 4.1编译成功了。Android NDK改用r15c,编译时udp.c会报错,百度了很久都没找到解决方案,对比了以前的ffmpeg的代码,只好将这些出错的代码块直接删除。顺利通过编译。

更多相关文章

  1. minSdkVersion,targetSdkVersion, android:maxSdkVersion
  2. android4.4 安装微信7.0.6版本底部显示黑色的问题
  3. Ubuntu16.04编译ffmpeg
  4. 包管理系统分析
  5. ubuntu 9.04下ndk安装问题
  6. Android(安卓)8.0 Volte开关流程 HD图标显示
  7. repo 切换分支一种简单的方法
  8. React Native开发error calling appregistry.runapplication的解
  9. Android(安卓)利用viewpager 来实现Frament 有导航条

随机推荐

  1. 5G 有可能会使 Web 明显变慢[每日前端夜
  2. 在 HTML 中包含资源的新思路[每日前端夜
  3. Java后端开发三年多线程你都懂,问你异步编
  4. 把 WebAssembly 用于提升速度和代码重用[
  5. VS中scanf等函数报错解决方法
  6. 怎样用 JavaScript 操作 Cookie[每日前端
  7. 一招搞定GitHub下载加速!
  8. Javascript 的新功能-Part 1[每日前端夜
  9. 输入一个整数减去6的结果
  10. 对不起我拖后腿了!我才刚用上Java 11