音视频技术学习:Linux系统下编译ffmpeg(02)

本文详细记录了在Ubuntu环境下,如何下载配置Android NDK,修改ffmpeg配置文件,以及创建并执行编译脚本,最终成功编译出适用于Android ARM架构的ffmpeg动态库.so文件的过程。
摘要由CSDN通过智能技术生成
记录编译ffmpeg生成so库的流程方法
====================================================================================
====================================================================================
1、资源配置
ubuntu中新建ffmpeg目录
mkdir ffmpeg
 
2、下载对应ndk和ffmpeg版本到Ubuntu上,并解压到ffmpeg当前目录
如:android-ndk-r15c-linux-x86_64.zip     和    ffmpeg-3.2.1.tar.gz
cd ffmpeg   //进入到文件夹
wget +linux版本的下载链接地址 //下载ndk: wget https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip?hl=zh_cn
unzip + 压缩文件 //解压 :  android-ndk-r15c-linux-x86_64.zip
tar -xzf  ffmpeg-3.2.1.tar.gz //解压
或者:
tar -zxvf  ffmpeg-3.2.1.tar.gz     //解压ffmpeg
 
最终显示如下:

*3.配置ndk

ubuntu@ubuntu-virtual-machine:~/ffmpeg/android-ndk-r15c$ pwd
/home/ubuntu/ffmpeg/android-ndk-r15c  //pwd 查看当前全路径名
gedit ~/.bashrc //进入环境变量配置 gedit 
export NDK=/home/ubuntu/ffmpeg/android-ndk-r15c  //配置你的安装路径
export PATH=${PATH}:$NDK  //配置路径
:wq!//保存退出
source ~/.bashrc   //执行环境变量
ndk-build    //查看是否安装成功,只要不是显示ndk-build not found,则表示安装成功
 
4.修改配置文件
修改ffmpeg-3.2.1文件夹中的configue文件, 如果你不修改的话,编译出来过后的.so文件后面会有一串数字,无法使用,所以得修改他的命名规则。
将大约line 3247行的如下相关配置
修改之前
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)'
 
5.修改configure文件并在configure 同级目录下 新建android_build.sh文件,编辑android_build.sh
 
gedit android_build.sh
 
#!/bin/bash
# 清空上次的编译
make clean
#你自己的NDK路径。
export NDK=/home/ubuntu/ffmpeg/android-ndk-r15c
# 设置你的android平台编译器的版本 这里采用Android4.0
export SYSROOT=$NDK/platforms/android-14/arch-arm/
#编译使用的toolchain
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-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
其中NDK是你自己刚刚配置的ndk路径,SYSROOT为platforms中的路径,TOOLCHAIN为toolchains里面中的路径,依次配置好过后保存并退出。
执行ffmpeg文件夹下的android_build.sh文件,进行编译。
 
6.编译.sh文件
./android_build.sh
 
如果提示bash: ./android_build.sh: 权限不够,修改权限即可:
 
 chmod -R 755  android_build.sh
 
至于755,这个数字怎么来的参考下图: 
 
make命令找不到:apt-get安装make
命令:sudo apt-get install make
 
当编译成功过后会在文件夹中出现android文件夹, 在lib文件夹中就有你需要的.so文件了
编译成功后在~/ffmpeg/ffmpeg-3.2.1/android/arm/lib文件夹下有编译输出的.so文件。
 

 注:从虚拟机拷贝文件到windows报错误: 您已尝试将一个或多个符号链接复制到不支持符号链接的主机操作系统。

复制的是文件夹。将文件夹压缩到当前目录,然后复制压缩文件即可 

 
 
需要使用到相关so库进行开发研究,可点击下载  ffmpeg-3.2(arm).zip
 
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值