FFmpeg For Android (二) Ubuntu下编译FFmpeg源码
来源:互联网 发布:河南卫视直播网络直播 编辑:程序博客网 时间:2024/04/29 17:33
根据上一篇文章《FFmpeg For Android (一) 在Windows7下安装Ubuntu虚拟系统》安装并熟悉了Ubuntu 接下来开始编译FFmpeg 以下教程面向Android开发者
1.下载相关文件
首先去下载FFmpeg的源码 (国内在git下的话太慢了 经常中断)
FFmpeg下载 http://www.ffmpeg.org/download.html
我下载了ffmpeg-3.2.tar.bz2 版本
然后下载NDK android-ndk-r10e-linux-x86_64.bin 建议r10e版本 (下载慢的用迅雷 不需要翻墙)
NDK r10e下载 http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin
2.配置环境
运行Ubuntu系统 在桌面创建如下路径的文件夹
Android/NDK/Android/FFmpeg/
把刚才下载的ffmpeg-3.2.tar.bz2和android-ndk-r10e-linux-x86_64.bin文件复制到相应文件夹内
如果使用windows下载的, 直接拖动文件到虚拟机Ubuntu桌面也行
打开终端 cd到NDK的目录并安装bin文件:
cd /home/ubuntu/桌面/Android/NDKsudo chmod u+x android-ndk-r10e-linux-x86_64.bin./android-ndk-r10e-linux-x86_64.bin
输入管理员密码然后自动解压
解压完成显示Everything is Ok 如果不是 请重新来一遍
配置NDK环境变量
终端输入
sudo gedit /etc/profile
然后在文件末尾添加以下两条
export ANDROID_NDK= 你的ndk路径(注意看图,我怎么写的)export PATH=$ANDROID_NDK:$PATH
然后点击右上角保存
然后再输入:
source /etc/profile. /etc/profile
然后就配置好了
如图,我的是这样的
然后终端继续输入:
ndk-build -v
可查看ndk配置信息 有以下反应则成功 否则检查你漏了哪些步骤重新再来
如图:
3.编译FFmpeg
回到刚才Android/FFmpeg/目录 把ffmpeg-3.2.tar.bz2压缩文件给解压到当前目录 (右键>提取到此处)
为了不生成版本号, 到解压后的文件里找到configure文件(否则生成的文件会显示版本安卓用不了)
右键>使用gedit打开修改
直接搜索找到以下位置,把以下代码
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)''
然后保存并关闭
然后仍然在Android/FFmpeg/目录下新建脚本文件 取名为build_android.sh
并编辑内容如下:
# build_android.shNDK=你的NDK路径SYSROOT=$NDK/platforms/android-9/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64function build_android{./configure \--prefix=你的FFmpeg路径/android/arm \--enable-neon \--enable-hwaccel=h264_vaapi \--enable-hwaccel=h264_vaapi \--enable-hwaccel=h264_dxva2 \--enable-hwaccel=mpeg4_vaapi \--enable-hwaccels \--enable-shared \--enable-jni \--enable-mediacodec \--disable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-avdevice \--disable-doc \--disable-symver \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=linux \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmake -j4make install}ADDI_CFLAGS="-marm"build_android
注意,仔细检查以上配置的NDK和FFmpeg路径是否存在并正确,一般问题都出在这一步 因为我写的教程和你的系统路径不太一样 所以建议请按我的教程提供的下载链接下载相关文件 (我肯定亲测过可以的)
编辑完保存
我是这样的
贴出来给你们复制下
# build_android.shNDK=/home/ubuntu/桌面/Android/NDK/android-ndk-r10eSYSROOT=$NDK/platforms/android-9/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64function build_android{./configure \--prefix=/home/ubuntu/桌面/Android/FFmpeg/ffmpeg-3.2/android/arm \--enable-neon \--enable-hwaccel=h264_vaapi \--enable-hwaccel=h264_vaapi \--enable-hwaccel=h264_dxva2 \--enable-hwaccel=mpeg4_vaapi \--enable-hwaccels \--enable-shared \--enable-jni \--enable-mediacodec \--disable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-avdevice \--disable-doc \--disable-symver \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=linux \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmake -j4make install}ADDI_CFLAGS="-marm"build_android
然后回到终端, cd到这个sh脚本的位置并执行,如下:
cd /home/ubuntu/桌面/Android/FFmpeg/ffmpeg-3.2chmod a+x build_android.sh./build_android.sh
如图
按回车开始编译… 等待编译完毕
此时 关键的一刻来了 这里你们可能会有遇到各种情况 请看文章下面的常见问题
( 编译过程中如果出现什么问题要中断的 按Ctrl+C中断, 编译过程中会出现一些警告, 请无视)
最后 编译完成是这样子的(出现一堆INSTALL XXXXX) 没有提示Error什么的
编译完成 so文件都在这里
/home/ubuntu/桌面/Android/FFmpeg/ffmpeg-3.2/android/arm/lib
呐~ 如图
4.常见错误
1.如果提示一个”括号’ 语法错误’ 时, 把文本的括号取消换行
如:
function build_android{ xxx...}
改成这样解决
function build_android{ xxxx...}
2.如果提示 ‘build_android function 没找到’ 的错误
请无视, 系统问题.
3.如果提示没找到ndk/FFmpeg
那就检查ndk/FFmpeg路径 仔细检查并且对比你自己的ubuntu有没有这个目录 否则改正过来
4.注意终端面板最好一直开启不要关闭 配置好ndk后有些系统有问题 在编译ffmpeg时提示没找到ndk环境
解决办法是重复一遍ndk配置:
终端输入
sudo gedit /etc/profile
不作修改 然后再回到终端输入
source /etc/profile. /etc/profile
然后此时重新执行build_android.sh
cd /home/ubuntu/桌面/Android/FFmpeg/ffmpeg-3.2chmod a+x build_android.sh./build_android.sh
然后再输入ndk-build -v 便神奇的找到了NDK路径 并且打印了版本
趁此机会 立刻执行build_android.sh 编译ffmpeg 成功 (我编译了好几次 遇到两次这样的情况)
5.如果提示./configure什么语法错误…什么 没找到config.make之类的一堆错误…
此时可能你正在编辑build_android.sh 试试把已打开正在编辑build_android.sh文件的文本编辑器关闭
然后关闭终端 重新打开终端执行build_android.sh编译
6.如果还有其他问题请重新按本教程来一遍 #
- FFmpeg For Android (二) Ubuntu下编译FFmpeg源码
- ubuntu下编译ffmpeg
- Ubuntu下编译ffmpeg
- ubuntu下编译FFmpeg
- Ubuntu下编译FFmpeg
- ubuntu下编译ffmpeg
- ubuntu下编译FFmpeg
- ubuntu下编译FFmpeg
- Ubuntu下编译ffmpeg
- Ubuntu下FFmpeg编译
- FFmpeg学习—ubuntu 下编译 Android ffmpeg
- windows10下编译ffmpeg for android
- Ubuntu下FFmpeg-Android-master编译过程
- Android Ubuntu下FFmpeg的编译教程
- FFMpeg 源码编译 在ubuntu
- Android下编译ffmpeg
- ffmpeg for android 独立ndk以及android项目下编译 --ubuntu
- ffmpeg for android 独立ndk以及android项目下编译 --ubuntu
- ORM数据层框架的设计热点:更新指定的列的几种设计方案
- CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
- CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
- 一些用到的linux命令,持续更新
- CMS模板引擎:XHtmlAction
- FFmpeg For Android (二) Ubuntu下编译FFmpeg源码
- ASP.NET MVC 多语言方案
- 最近花了几个夜晚帮师妹整了一个企业网站
- DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
- android音视频点/直播模块开发
- 如何识别一个字符串是否Json格式
- Excel导入导出组件的设计
- 回忆录:30岁那年,你成长了吗?(上篇)
- Excel导入导出的业务进化场景及组件化的设计方案(上)