FFmpeg的安装、编译——教程及踩坑

写在前面

FFmpeg的安装和编译,因为有两台电脑,安装和编译四处踩坑,边踩边总结在这里,持续更新~

2019.06.29

Ubuntu、Mac安装
Ubuntu下编译

Windows

FFmpeg的安装、编译——教程及踩坑_第1张图片

Mac

安装

安装十分简单,参考MAC 系统安装FFmpeg ,一共两步:
第一步是下载Homebrew,将官方的最新链接复制到终端上:

第二步,下载、安装ffmpeg

编译

// TODO

在FFmpeg Builds可以下载编译好的FFmpeg,且与官网同步
附上NDK各版本下载

报错

Ubuntu

安装
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg
// 查看是否安装成功:
ffmpeg -version
编译
参考资料
FFmpeg 3.4

如何为Android构建FFmpeg
How to build FFmpeg for Android

FFmpeg 4.1

Clang编译FFmpeg常见问题
因为NDK从r18b开始,已经移除了gcc这个编译工具,详情见ndk r18b修订内容
(这部分没有试成功,将搜集到的资料展示给大家,没办法帮大家踩坑了)

我自己编译成功的是FFmpeg 3.4。3.4下的两个链接其实是相同的,中文的是翻译的英文原文,但是英文原文要科学上网才能访问,所以都发了出来。这里说几个我在编译过程中踩的坑:

1.NDK和FFmpeg版本:网上的教程基本上都是FFmpeg3.x,NDK 14或15的情况下进行编译的,这里也不推荐第一次编译就使用最新的NDK和FFmpeg版本(如果你是大神,请教教我~),一是因为FFmpeg和NDK都还在不断的更新,其中有很多的改动,想按照网上的教程用最新的NDK去编译FFmpeg,可能会出现很多错误,需要踩坑耗时较多;二是NDK从r18b开始,移除了gcc编译工具,我找到的网上的教程(除了上面Clang编译的那篇)都是使用gcc的。

2.按照上面的教程中去做的话,会根据文章顺序出现提示的那些问题,照着改就行了,但是也有点小坑。一是网上搜到的shell脚本,都会将配置和make放在一个function中,我在电脑上运行时,会报出文件夹权限问题;而在sudo 的权限下执行限之后,提示找不到那个function,解决方法就是将function去掉,直接顺序执行configue和make就可以了;二是B0被定义成常量需要替换的问题,这里不仅仅是B0变量需要替换,所有带B0的都需要进行替换(emmm,事实是这样,我现在也没法解释)。如果你替换之后仍然编译不过,不要慌,先全局查找一下,是不是有的B0还在呢。
FFmpeg的安装、编译——教程及踩坑_第2张图片
FFmpeg的安装、编译——教程及踩坑_第3张图片

3.如果你想使用不同的NDK版本去编译,记得看清楚版本名。。不光是数字,后面的字母也要修改。。不要问我为什么要说这点。。

最后,正确编译之后是这样的:
FFmpeg的安装、编译——教程及踩坑_第4张图片
FFmpeg的安装、编译——教程及踩坑_第5张图片
2019.07.01
最新版FFmpeg编译出现问题,将shell脚本中的target改为Android即可,可参考编译针对于Android平台的ffmpeg 4.1版本(最新版)

FFmpeg In Android

贴几个比较好的Github项目

1.bravobit/FFmpeg-Android

This project is a continued fork of FFmpeg Android Java by WritingMinds. This fork fixes the CANNOT LINK EXECUTABLE ffmpeg: has text relocations issue on x86 devices along with some other bugfixes, new features and the newest FFmpeg builds.

2.xufuji456/FFmpegAndroid

android端基于FFmpeg实现音频剪切、拼接、转码、混音、编解码;视频剪切、水印、截图、转码、编解码、转Gif动图、画面拼接、视频倒播;音视频合成与分离;音视频解码、同步与播放;FFmpeg本地推流、H264与RTMP实时推流直播;OpenGL+GPUImage实时滤镜;FFmpeg滤镜:素描、色彩平衡、hue、lut、模糊、九宫格等;基于IjkPlayer修改支持RTSP超低延时直播(局域网1080P延时130ms)、暂停、静音,多路投屏直播

3.wlanjie/AndroidFFmpeg

android 读取摄像头和麦克风,使用rtmp推流

你可能感兴趣的:(音视频开发)