编译环境
ffmpeg :4.3
CentoOS Linux release 7.6.1810
android-ndk-r21d
开始
1.解压完成之后,首先切到 root 权限
2.执行ffmpeg 文件下的 configure


出现上面的问题
参考
ubuntu 编译FFmgeg执行./configure 时会报此错误。
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
需要安装yasm的汇编编译器
sudo apt-get install yasm
分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。
如果不需要yasm也可以
./configure --disable-x86asm
————————————————
版权声明:本文为CSDN博主「IT民工老巢」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/taosera/article/details/79566905
完成之后执行脚本
#!/bin/bash
export TMPDIR=/Users/zhouwen/Desktop/ffmpeg/ffmpeg-4.1.3/ffmpegoutput #需要指定编译输出的临时文件夹,不然会报错 unable to create temporary file in
# NDK的路径,根据自己的安装位置进行设置
NDK=/Users/zhouwen/Desktop/ffmpeg/android-ndk-r10e
# 编译针对的平台,可以根据自己的需求进行设置
# 这里选择最低支持android-14, arm架构,生成的so库是放在
# libs/armeabi文件夹下的,若针对x86架构,要选择arch-x86
PLATFORM=$NDK/platforms/android-14/arch-arm
# 工具链的路径,根据编译的平台不同而不同
# arm-linux-androideabi-4.9与上面设置的PLATFORM对应,4.9为工具的版本号,
# 根据自己安装的NDK版本来确定,一般使用最新的版本
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-avformat \
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
--disable-x86asm \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$PLATFORM \
--extra-cflags="-I$PLATFORM/usr/include" \
# --extra-ldflags="-L$PLATFORM/usr/lib -nostdlib" \ #①这一句我注释掉了,不然会报 ld: -single_module: unknown option
$ADDITIONAL_CONFIGURE_FLAG
sed -i '' 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
sed -i '' 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
sed -i '' 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
sed -i '' 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
sed -i '' 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
sed -i '' 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
sed -i '' 's/HAVE_CBRT 0/HAVE_CBRT 1/g' config.h
sed -i '' 's/HAVE_RINT 0/HAVE_RINT 1/g' config.h
make clean
make -j4
make install
echo "编译完成"
}
# arm v7vfp
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
PREFIX=$(pwd)/android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
echo "开始编译ffmpeg"
echo "OPTIMIZE_CFLAGS ${OPTIMIZE_CFLAGS}"
echo "PREFIX ${PREFIX}"
echo "NDK ${NDK}"
echo "TOOLCHAIN ${TOOLCHAIN}"
build_one
这里可以参考
FFmpeg编译
作者:Kallan
链接:https://www.jianshu.com/p/28c4d6be5c90
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论