美文网首页
十四、编译ffmpeg

十四、编译ffmpeg

作者: ChiangCMBA | 来源:发表于2018-04-24 07:11 被阅读0次

关于cmake语法,请参考这篇文章十三、cmake语法

build_android.sh-->configure-->makefile-->*.so

一、下载NDK

NDK Dowloads
android-ndk-r14b-linux-x86_64.zip

1.1 命令行下载

wget https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip

wget url (该命令默认下载到当前目录)
wget -o new_file_name url (使用参数-o来指定一个文件名,以新的文件名保存)

1.2 解压

unzip android-ndk-r14b-linux-x86_64.zip
or for (*.tar.bz2)
tar -jxvf android-ndk-r14b-linux-x86_64 .tar.bz2

如果没有安装unzip,则需要通过以下命令安装:
apt-get install unzip

二、下载解压ffmpeg

2.1 下载FFmpeg源文件2.6.9的版本

wget http://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz
tar -xzvf ffmpeg-2.6.9.tar.gz

2.2 修改权限

chmod 777 -R ffmpeg-2.6.9

三、配置NDK环境变量

对当前用户进行环境变量配置

3.1 编辑.bashrc文档,添加ndk路径,配置环境变量

cd ~ (进入当前用户Home目录)
vim ~/.bashrc
在.bashrc最后添加:

export NDK_ROOT = /usr/chiang/ndk/android-ndk-r14b
export PATH=$NDK_ROOT:$PATH
setting_ndk_path.png
3.2 执行.bashrc更新环境变量
 source ~/.bashrc
3.3 验证ndk环境是否配置成功

ndk-build -v


ndk_path.png

四、编译FFmpeg

4.1 编写shell 脚本文件:build_android.sh
#!/bin/bash
make clean
export NDK=/usr/chiang/ndk/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=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"

./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--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

注意:./configure --target-os=linux \ "\"的作用是换行,所有"\"后面不能有空格

4.2 调用执行./build_android.sh开始进行编译

chmod 777 -R build_android.sh
./build_android.sh

初次编译后,生成so文件有问题:

ffmpeg_lib_version_no_issue.png

解决方法:修改中/usr/chiang/ffmpeg/ffmpeg-2.6.9/configure的配置


modify_configure_location.png

具体修改:


modify_configure_lines.png
#Line2779
#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)'
#By Chiang START
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
#By Chiang END

再次编译的结果:

ffmpeg_lib_with_verion_no.png

虽然初次编译的so文件像libavcodec.so.56,在Linux中是可以正常加载的,但是在Android中则不能正常加载,所以需要修改so文件名的生成规则,使其生成为libavcodec.56.so,以方便在Android开发中的使用。

Go get build_android.sh and configure

相关文章

网友评论

      本文标题:十四、编译ffmpeg

      本文链接:https://www.haomeiwen.com/subject/sjldlftx.html