linux编译ffmpeg

  1. 下载ndk(r21)
  2. 下载ffmpeg4.2.3
  3. 解压到虚拟机Ubuntu16.04的/home/user/ffmpeg下
  4. 进入已解压的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)'

替换为

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'SLIB_INSTALL_LINKS='$(SLIBNAME)'
  1. 在ffmpeg解压的文件目录里,新建一个文件,命名为build_android.sh,并编写为:
#!/bin/bash# 清空上次的编译make clean#你自己的NDK路径.export NDK=/home/anjoiner/Android/Sdk/ndk-bundleTOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/API=29function 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 \    --cc=$CC    --cxx=$CXX    --enable-cross-compile \    --sysroot=$SYSROOT \    --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \    --extra-ldflags="$ADDI_LDFLAGS" \    $ADDITIONAL_CONFIGURE_FLAGmake cleanmake make installecho "The Compilation of FFmpeg for $CPU is completed"}#armv8-aARCH=arm64CPU=armv8-aCC=$TOOLCHAIN/bin/aarch64-linux-android$API-clangCXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=$CPU"build_android#armv7-aARCH=armCPU=armv7-aCC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clangCXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "build_android#x86ARCH=x86CPU=x86CC=$TOOLCHAIN/bin/i686-linux-android$API-clangCXX=$TOOLCHAIN/bin/i686-linux-android$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_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-64CC=$TOOLCHAIN/bin/x86_64-linux-android$API-clangCXX=$TOOLCHAIN/bin/x86_64-linux-android$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"build_android
  1. 执行
./build_android.sh

注意:当执行./build_android.sh的时候,出现权限不足,那么一定要给这个文件添加可执行权限

chmod 777 build_android.sh

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)签名和发布应用程序
  6. android studio信鸽推送10004错误
  7. Android(安卓)APK JNI sample (JAVA JNI)
  8. Android开发笔记
  9. [无线] AndroidManifest.xml配置文件详解

随机推荐

  1. CentOS 安装 Android
  2. Android 获取设备电池电量
  3. Android 创建DBHelper类
  4. android 单选对话框
  5. Android 跳转应用市场的应用详情页
  6. android开发状态栏相关汇总
  7. A simple Android example,including Int
  8. android 图片之多点触控放大缩小
  9. m2e-android (一个集成ADT和 Maven Androi
  10. android ndk-build log输出文件