简介
本文主要介绍Mac环境下FFMpeg的编译方法,同时还会简单介绍FFMpeg。
FFmpeg是用于处理多媒体内容(例如音频,视频,字幕和相关元数据)的库和工具的集合。它包含的库有:
libavcodec
,提供了多种编解码器的实现;libavformat
,实现流协议,容器格式和基本I / O访问;libavutil
,包括哈希,解压缩器和其他实用程序功能;libavfilter
,提供了一种通过滤波器链来更改解码的音频和视频的方法;libavdevice
,提供采用硬件设备进行图片补货和视频播放的抽象封装;libswresample
,实现了音频混合和重采样工作;libswscale
,实现了色彩转换和缩放等工作;
它包含的工具有:
- ffmpeg,处理,转换和流式传输多媒体内容的命令行工具箱。
- ffplay,mini多媒体播放器;
- ffprobe,检查多媒体内容的简单分析工具;
- 其他小工具,例如aviocat,ismindex和qt-faststart
- [x] 音视频基础0——目录
- [x] 音视频基础1——AudioTrack、AudioRecorder、MediaRecorder音频数据采集播放处理
- [ ] 音视频基础2——Android Camera API及Camera2 API的使用
- [ ] 音视频基础3——Android Camera API及Camera2 采集视频数据
- [ ] 音视频基础4——Android MediaCodec API学习
- [ ] 音视频基础5——Android 实现rtmp推流
- [x] 音视频基础6——交叉编译动态库
- [ ] 音视频基础7——MacOs下编译FFMpeg4.2.2
FFmpeg编译
在Mac上获取FFmpeg,有以下三种方式(CompilationGuide on MacOs):
- 采用包管理器
Homebrew
或MacPorts
安装ffmpeg
。这种安装会自动保持FFmpeg保持最新; - 下载Mac平台的静态编译版本。这种方式只要解压并运行下载下来的二级制文件即可。缺点是需要手动更新,并且可能不包含你想要的编码库和滤镜库;
- 手动编译。下载源码,以合适的flag运行
./configure
,再运行make
和make install
。同样的需要手动指定编译的配置选项并且手动配置第三方库。
利用Homebrew安装
利用Homebrew安装通用步骤:
没有安装Homebrew的,先运行如下明龙安装Homebrew:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Homebrew安装好后,运行如下命令安装ffmpeg:
1
brew install ffmpeg
如果需要获取最新的master版本,运行如下命令:
1
brew install ffmpeg --HEAD
Homebrew安装额外选项的配置方法
由于从2.0版本后开始,Homebrew不在提供核心功能以外的选下支持,要想通过Homebrew来编译支持额外库选下的FFmpeg,需要使用第三方库来实现。这个库就是homebrew-ffmpeg,(可参考该项目的readme文件)具体运行命令如下:
1 | brew tab homebrew-ffmpeg/ffmpeg |
FFMPEG 依赖库
1 | Fetching dependencies for ffmpeg: giflib, highway, imath, jpeg-turbo, libpng, xz, lz4, zstd, libtiff, little-cms2, openexr, webp, jpeg-xl, libvmaf, aom, aribb24, dav1d, freetype, fontconfig, frei0r, ca-certificates, gmp, libunistring, gettext, libidn2, libtasn1, nettle, p11-kit, openssl@3, libevent, libnghttp2, unbound, gnutls, pcre2, mpdecimal, readline, sqlite, python@3.12, glib, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, graphite2, icu4c, harfbuzz, lame, fribidi, libunibreak, libass, libbluray, cjson, libmicrohttpd, mbedtls, librist, libsoxr, libssh, libvidstab, libogg, libvorbis, libvpx, opencore-amr, openjpeg, opus, rav1e, libsamplerate, flac, mpg123, libsndfile, rubberband, sdl2, snappy, speex, srt, svt-av1, leptonica, libb2, libarchive, pango, tesseract, theora, x264, x265, xvid, libsodium, zeromq and zimg |
ffmpeg的更新
运行如下命令可以将ffmpeg更新只最新版本:
1 | brew update && brew upgrade ffmpeg |
如果安装的是HEAD版本,运行如下命令:
1 | brew upgrade --fetch-HEAD ffmpeg |
手动安装
安装XCode,安装好后,然后安装Command Line Tools,命令如下:
1
xcode-select --install
利用Homebrew安装编译ffmpeg以来所需要的库,命令如下:
1
2brew install automake fdk-aac git lame libass libtool libvorbis libvpx \
opus sdl shtool texi2html theora wget x264 x265 xvid nasm这一步也可以借助其他工具安装,需要下载并编译如下工具:
- Pkg-config & GLIb
- NAsm
- Additional libraries (具体可通过./configure —help查看)
- x264 encodes H.264 video. Use
--enable-gpl --enable-libx264
. - fdk-aac encodes AAC audio. Use
--enable-libfdk-aac
. - libvpx is a VP8 and VP9 encoder. Use
--enable-libvpx
. - libvorbis encodes Vorbis audio . Requires libogg. Use
--enable-libvorbis
. - libopus encodes Opus audio.
- LAME encodes MP3 audio. Use
--enable-libmp3lame
. - libass is a subtitle renderer. Use
--enable-libass
.
- x264 encodes H.264 video. Use
- Freetype
编译
在必要的编码库和依赖库编译完成后,就可以下载ffmpeg源码,下载源码后,切换至ffmpeg目录,运行
./configure --help
,查看支持的选项,打开需要包含的选项,示例如下:1
2
3
4
5
6
7git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass \
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame \
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libopus --enable-libxvid \
--samples=fate-suite/
make在编译成功后,运行
sudo make install
(需要超级用户权限验证情形) 或make install
(不需要超级用户权限验证情形),这样就完成了ffmpeg的编译了。
个人建议采用Homebrew方式安装。
注意:上面是FFmpeg 官方文档上介绍的年内容,结果我实际操作时发现,并不能通过homebrew直接安装,如实就通过下载FFmpeg自己编译了。
最近重新安装时,发现已经可以直接通过 brew install ffmpeg
安装了,安装过程有点慢,主要是FFMpeg 依赖的包太多了;
FFMpeg简单使用
可能的问题
FFMpeg支持HTTPS
参考文章: