我是靠谱客的博主 会撒娇季节,最近开发中收集的这篇文章主要介绍Linux下编译FFmpeg库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、下载ndk

下载地址。
在这里插入图片描述
找到ndk-r17复制下载链接
在这里插入图片描述
接着打开linux终端,用wget命令下载链接资源,然后回车等待资源下载完成。
在这里插入图片描述

二、ndk环境配置

首先解压ndk的zip文件。
执行unzip android-ndk-r17c-linux-x86_64.zip?hl=zh_cn 解压该文件(可以使用ls命令查看文件的名称)。解压完成可以看到多了一个解压后的文件
在这里插入图片描述
配置ndk的环境变量
使用vim打开vim /etc/profile文件进行编辑。在该文件的最后进行配置,然后保存退出编辑
在这里插入图片描述
执行source /etc/profile命令使配置好的环境变量生效。然后执行ndk-build 测试环境变量是否配置成功。出现下面这个样的提示就代表成功了。
在这里插入图片描述

三、FFmpeg下载

下载(下载地址)
在这里插入图片描述
下载该链接的资源
在这里插入图片描述
下载好了可以看到如下
在这里插入图片描述
解压FFmpeg压缩包
需要注意这个压缩包不是zip包所以不能用uzip解压。对于tar包可以使用tar命令解压。执行tar xvf ffmpeg-4.0.5.tar.bz2 进行解压。
x表示解压、v表示输出详情、f表示文件。
在这里插入图片描述

四、编译FFmpeg

进入ffmpeg-4.0.5可以看到里面有个configure文件,该文件是一个shell脚本。通过它可以编译FFmpeg。但是该文件直接编译的结果只能运行在linux中,我们需要的结果是可以运行在Android中,因此需要给它传递一些参数。

创建一个buildFFmpeg.sh脚本,专门用来执行configure。

#!/bin/bash
#指定NDK路径
NDK_ROOT=/root/ndk/android-ndk-r17c
#指明NDK交叉编译gcc所在目录
TOOLCHAIN=${NDK_ROOT}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#抑制警告
#从as的 externalNativeBuild/xxx/build.ninja
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -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"
INCLUDES=" -isystem $NDK_ROOT/sources/android/support/include"

PREFIX=./android/armeabi-v7_1
#执行configure脚本用于生成makefile
./configure 
#指定编译出来的文件的存放位置
--prefix=$PREFIX 
#优化大小
--enable-small 
#不编译FFmpeg程序,我们需要的是静态或者动态库
--disable-programs 
#关闭avdevice模块,此模块在Android中用不着
--disable-avdevice 
#关闭所有编码器,播放时不需要编码
--disable-encoders 
#关闭所有的复用器,不需要生成mp4这种文件
--disable-muxers 
#关闭视频滤镜
--disable-filters 
#开启交叉编译
--enable-cross-compile 
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
#编译成静态库
--disable-shared 
--enable-static 
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm 
#传给gcc的参数
--extra-cflags="$FLAGS $INCLUDES" 
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" 
--arch=arm 
#目标平台
--target-os=android
# 清理一下
make clean
#执行makefile
make install

友情提示,需要把执行configure脚本传递的参数之间的注释去除掉,不然会出现找不到命令的情况,像下面这样就好
在这里插入图片描述
保存退出编辑,然后执行 ./buildFFmpeg.sh 命令来执行脚本。如果提示没有权限,需要先给文件权限 执行chmod 777 buildFFmpeg.sh,然后再执行。
在这里插入图片描述
如果执行脚本时出现下面这个错误
在这里插入图片描述
解决方法:

  • 1、检查参数 cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 是否正确(可以到对应的ndk目录看)
  • 2、执行yum install gcc命令尝试安装gcc编译器

解决了问题后,再次尝试编译,经过漫长的等待~可以查看编译后的结果如下
在这里插入图片描述

最后

以上就是会撒娇季节为你收集整理的Linux下编译FFmpeg库的全部内容,希望文章能够帮你解决Linux下编译FFmpeg库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部