编译Android FFmpeg
XShell,XFTP社区版,下载
https://www.netsarang.com/zh/free-for-home-school/
安装Linux虚拟机,并且使用XShell连接虚拟机
虚拟机教程
https://download.csdn.net/download/yu540135101/11347989
下载NDK r14b Linux版
https://developer.android.google.cn/ndk/downloads/older_releases
https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip?hl=zh_cn
下载ffmpeg 3.3.9
http://www.ffmpeg.org/download.html#releases
http://ffmpeg.org/releases/ffmpeg-3.3.9.tar.gz
给与读写权限chmod 777 filename
将下载好的ndk和ffmpeg通过Xftp发送到Linux下
创建ffmpeg目录,并给予权限。chmod给过权限后,才可以用xftp上传到这个目录里
解压这两个压缩包
tar -zxvf ffmpeg-3.3.9.tar.gz
unzip android-ndk-r14b
替换ffmpeg里的configure文件,里面稍作了修改。
可以将Linux中的ffmpeg的configure文件移动到Windows上,删除Linux中的该文件,在Windows上修改后,再用xftp传回Linux
不同版本的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)'
现在需要执行下./configure
例如
gcc -v 可以查看gcc版本,检查是否安装了gcc
yasm --version 查看yasm
需要先安装gcc yasm
sudo apt install gcc
sudo apt install yasm
如果安装过程出现,无法锁定管理目录(/var/lib/dpkg/)删除掉这个锁就可以了
#:sudo rm /var/cache/apt/archives/lock
#:sudo rm /var/lib/dpkg/lock
如果想卸载yasm
sudo apt-get remove yasm
给予权限,然后./configure执行成功后,会生成几个config文件
编译脚本(同configure位置一样)
正确写上自己的地址
export NDK=/home/zhangyu/ffmpeg/android-ndk-r14b
这里的4.9版本号,查看自己toolchains下的版本
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#!/bin/bash
make clean
export NDK=/home/zhangyu/ffmpeg/android-ndk-r14b
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=armeabi-v7a
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
export ADDI_LDFLAGS="-Wl,--fix-cortex-a8"
./configure --target-os=android \
--prefix=$PREFIX --arch=arm \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
给予权限,然后执行编译脚本,需要提前安装好make
如果脚本报错:bash: ./build.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录
则需要使用vim修改这个脚本的文件格式为unix,以下修改步骤,需要先安装vim
查看文件的属性
vim build.sh
:set
可以看到
fileformat=dos
则说明这个文件是Windows下的文件
修改文件格式
vim build.sh
:set ff=unix
:wq
即可