FFmpeg资料
记录安装的版本
2020-08-02
FFmpeg:4.3.1
release date: 2020-07-11
包含的库的版本:
libavutil 56. 51.100
libavcodec 58. 91.100
libavformat 58. 45.100
libavdevice 58. 10.100
libavfilter 7. 85.100
libswscale 5. 7.100
libswresample 3. 7.100
libpostproc 55. 7.100
Mac安装FFmpeg
Mac安装FFmpeg有两种方式:
- brew命令安装, 方便简单,但是不可修改;
$ brew search ffmpeg
==> Formulae
ffmpeg ffmpeg2theora ffmpeg@2.8 ffmpegthumbnailer
$ brew install ffmpeg
- 通过源码的方式编译安装, 下载源码有两种方式, 直接clone仓库源码和官网历史版本(ffmpeg-4.3.1.tar.bz2)中下载指定版本的压缩包;
1. 直接clone官方仓库:git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
2. 官网下载指定版本的源码(推荐);
推荐使用源码的方式安装,可以更灵活的使用FFmpeg。
FFmpeg源码的编译和安装
以下命令均在源代码根目录执行;
FFmpeg源码的编译和安装的步骤如下:
- 旧版的ffplay依赖于SDL-1.x,最新版的ffplay依赖于SDL-2.x,需要安装SDL,编译安装FFmpeg后才会生成bin/ffplay执行文件。
$ brew search sdl
$ brew install sdl
$ brew install sdl2
- 使用./configure来配置编译脚本:
# 定位到源代码根目录
$ cd ffmpeg-4.3.1
# 简单配置
$ ./configure --prefix=/usr/local/ffmpeg
# 李超老师在音视频小白入门实战课中的配置
# FFmpeg安装目录为/usr/local/,开启级别为3的debug模式,编译生成动态库
$ ./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --disable-static --enable-shared
# 李超老师在FFmpeg实战课中的配置
$ ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags=
- 编译FFmpeg,可以指定并发编译进程数,提高编译速度:
# 指定并发编译进程数为4
$ make -j 4
- 安装编译好的FFmpeg:
$ make install
# 或
$ sudo make install
- 配置环境变量
$ vim .zshrc
export PATH=$PATH:/usr/local/ffmpeg/bin
# 验证安装
$ ffmpeg -version
# 或
$ ffmpeg
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 11.0.3 (clang-1103.0.32.62)
configuration: --prefix=/usr/local/ffmpeg --enable-debug=3 --disable-static --enable-shared
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
关于configure命令的解释
对FFmpeg源码生成编译脚本,主要通过./configure命令来配置,具体命令参数可以通过"./configure --help"命令来查看,./configure命令还可以查看FFFmpeg当前源码支持的一些信息。
- 查看FFmpeg信息的相关命令:
# 分页查看FFmpeg支持的基本的命令:
$ ./configure --help | more
# 查看所有支持的解码:
$ ./configure --list-decoders
- 配置编译脚本相关的参数:
--prefix=/usr/xxx: 指定安装路径;
--enable-debug=3: 开启debug,级别为3,gcc编译时会添加-g3参数,让调试信息更全,便于调试程序;
--disable-static: 关闭静态库(默认会编译成静态库)
--enable-shared: 打开动态库
编译和安装ffmpeg时遇到的问题
ERROR: xxx not found
not found 大多是系统缺少某些库,直接安装即可解决;
可能出现库缺失的情况如下:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
brew install yasm
/usr/local/Cellar/yasm/1.3.0_2: 45 files, 3MB
ERROR: libfdk_aac not found
brew install fdk-aac
/usr/local/Cellar/fdk-aac/2.0.1: 15 files, 3.2MB
ERROR: speex not found using pkg-config
brew install speex
/usr/local/Cellar/speex/1.2.0: 21 files, 694.5KB
ERROR: libx264 not found
brew install x264
/usr/local/Cellar/x264/r2917_1: 11 files, 5.9MB
ERROR: x265 not found using pkg-config
brew install x265
ffmpeg安装目录的文件结构
# /usr/local/ffmpeg
ffmpeg
|- bin/:可执行文件
| |- ffmpeg: 可以进行推流、音视频处理
| |- ffplay: 是一个播放器,可以拉流,可以播放本地文件,ijkplayer基于ffplay移植到移动端;
| |- ffprode: 侦测多媒体的基本信息,如格式、一些基本信息;
|- include/: 头文件,进行ffmpeg二次开发时,需要引用这里的一些头文件;
| |- libavcodec 音视频编解码
| |- libavdevice 设备管理
| |- libavfilter 滤镜
| |- libavformat 多媒体文件格式处理
| |- libavutil 一些基本工具
| |- libswresample 音频的重采样
| |- libswscale 视频的缩放处理
|- lib/: 动态库(*.dylib)和静态库(*.a), 头文件中的库在lib里都有对应库;
|- share/: 文档和例子;