文章目录

        • FFMPEG 最小兼容版本 注意事项



FFMPEG 最小兼容版本 注意事项



1 . 最小兼容版本 : 在 Ubuntu 中编译 FFMPEG 时 , 需要指定头文件 与 NDK 的依赖库 , 这个 NDK 依赖库与头文件的 版本 , 是我们的最小兼容版本 ;


2 . 错误分析 : 下面的情况就是配置了错误的最小编译版本 , 排查了半天 , 找出了问题 ; 编译时指定了 21 版本的依赖库 , 但是 build.gradle 中指定了 15 版本的最小兼容版本 ;

  libavformat/hls.c:834: error: undefined reference to 'atof'  libavformat/hlsproto.c:141: error: undefined reference to 'atof'  libavcodec/v4l2_buffers.c:439: error: undefined reference to 'mmap64'  clang++: error: linker command failed with exit code 1 (use -v to see invocation)  ninja: build stopped: subcommand failed.

3 . 交叉编译脚本 : 在 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 ) 博客中 , 交叉编译 FFMPEG 库时 , 使用的编译脚本如下 :

#!/bin/bash# NDK 根目录NDK_ROOT=/root/NDK/android-ndk-r17c# TOOLCHAIN 变量指向 gcc g++ 等交叉编译工具所在的目录TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64# gcc 编译器参数FLAGS="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem $NDK_ROOT/sources/android/support/include -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fPIC"# 编译结果输出路径PREFIX=./android/armeabi-v7a# 执行 configure 脚本生成 Makefile 构建脚本./configure \--prefix=$PREFIX \--enable-small \--disable-programs \--disable-avdevice \--disable-encoders \--disable-muxers \--disable-filters \--enable-cross-compile \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \--extra-cflags="$FLAGS" \--arch=arm \--target-os=android # 清除之前的编译内容make clean# 开启新的 FFMPEG 编译make install————————————————版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://hanshuliang.blog.csdn.net/article/details/104351312

4 . 库文件 : 交叉编译需要的库文件就是上述 NDK platforms 目录下的 函数库 ;


5 . --sysroot 头文件与库文件查找目录设定 : 使用 --sysroot=XX 参数设置 ;

指定本次编译的 头文件 与 库文件 , 系统会自动到 XX/usr/include 目录下查找头文件 , 到 XX/usr/lib 目录下查找库文件 ;


6 . 配置依赖库路径 : 配置 android-21 版本 的 库 和 头文件路径 , –sysroot=$NDK_ROOT/platforms/android-21/arch-arm , 其版本是 Android 21 版本的库 , 那么 Android Studio 中只能配置 21 的最小兼容版本 , 如果小于 21 就会报错 ;

更多相关文章

  1. Sony Tablet S 和 P 的 3G 版本将会在日本 NTT DoCoMo 发售
  2. 这可能是最好的 Android/Kotlin日志输出方法
  3. android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有
  4. android 修改电量图标(改为数字图标)
  5. android版本兼容,高版本低版本兼容性-[Android_YangKe]
  6. 平民价国产Android,1600左右的Broncho A1真机配置
  7. Android(安卓)drawable resource error:No resource found that m
  8. Android(安卓)沉浸式状态栏-字体颜色与背景颜色修改实现与兼容
  9. Android(安卓)环信之踩过的坑(一)---配置

随机推荐

  1. 从 App 启动过程看 Android(安卓)10.0 Fr
  2. Android permission 权限类及中英文说明
  3. Android窗口跳转
  4. 深度详解Retrofit2使用(二)实践
  5. Android binder 实例
  6. android 的几个黄色警告解决办法
  7. 判断可用的intent和更改Drawable的透明度
  8. Unity上同时兼容Android和IOS的JSON库
  9. android 加载 网络图片
  10. Android实现“退出确认”对话框