
一、關(guān)于 FFmpeg
FFmpeg 是一個(gè)音視頻領(lǐng)域使用最廣泛的跨平臺開源庫。由C語言編寫,但廣泛的為 C/C++、C#、Java、Python 等主流編程語言所調(diào)用。它集合了幾乎所有的編碼解碼庫與流協(xié)議,幾乎能完美處理音視頻開發(fā)領(lǐng)域的所有需求。
二、Mac 平臺安裝 FFmpeg
1、方式一:源碼安裝 FFmpeg
通過編譯源碼安裝 FFmpeg 的優(yōu)點(diǎn)是可以把我們想要的東西都塞到FFmpeg中,不想要的就刪掉,也就是根據(jù)自己的需要對 FFmpeg 進(jìn)行裁剪。首先我們編希望達(dá)到的目標(biāo):
(1)編譯出 ffmpeg、ffplay、ffprobe 三個(gè)命令行程序;
(2)只產(chǎn)生動(dòng)態(tài)庫,不產(chǎn)生靜態(tài)庫;
(3)將 fdk-aac、x264、x265 集成到 FFmpeg 中(fdk-aac 會(huì)在后續(xù) AAC 編解碼時(shí)用到,x264、x265 會(huì)在視頻模塊中用到);
1.1、安裝依賴項(xiàng):
a、安裝 yasm
# 下載 yasm 1.2.0
$ curl http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz >yasm.tar.gz
# 解壓
$ tar xzvf yasm.tar.gz
# 進(jìn)入目錄 yasm-1.2.0
$ cd yasm-1.2.0
# 執(zhí)行配置
$ ./configure
# 編譯
$ make
# 安裝
$ sudo make install
b、安裝 sdl2(如果不需要安裝 ffplay 可以忽略這一步):
$ brew install sdl2
c、安裝 fdk-aac
brew install fdk-aac
d、安裝 x264
brew install x264
e、安裝 x265
brew install x265
可通過 brew list命令查看是否安裝過 fdk-aac、x264、x265;
1.2、編譯 FFmpeg 源碼
a、下載 FFmpeg 源碼(xz、bzip 和 gzip 三種選項(xiàng)僅僅是壓縮格式不同,內(nèi)容是相同的):
官網(wǎng)下載地址:https://ffmpeg.org/download.html

b、下載完成解壓 FFmpeg ,打開終端進(jìn)入 FFmpeg 源碼文件夾:
$ cd /Users/mac/Downloads/ffmpeg-4.3.2
c、執(zhí)行源碼目錄下的 configure 腳本:
$ ./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265
--prefix
指定編譯好的 FFmpeg 安裝路徑
--enable-shared
生成動(dòng)態(tài)庫
--disable-static
不生成靜態(tài)庫
--enable-libfdk-aac
將 fdk-aac 內(nèi)置到 FFmpeg
--enable-libx264
將 x264 內(nèi)置到 FFmpeg 中
--enable-libx265
將 x265 內(nèi)置到 FFmpeg 中
--enable-gpl
x264、x265要求開啟 GPL License
--enable-nonfree
fdk-aac 與 GPL 不兼容,需要通過開啟 nonfree 進(jìn)行配置
參考:https://github.com/FFmpeg/FFmpeg/blob/master/LICENSE.md
./configure —help | grep XXX
通過命令查看每個(gè)配置項(xiàng)的作用
d、編譯:
$ make -j 8 && sudo make install
e、為了讓bin目錄中的 ffmpeg、ffprobe、ffplay 在任意位置都能夠使用,需要先將 bin 目錄配置到環(huán)境變量 PATH 中
# 打開環(huán)境變量
$ vim ~/.bash_profile
# 輸入 i 進(jìn)入編輯模式,配置 ffmpeg 環(huán)境變量,然后按 ESC,輸入 :wq 退出編輯模式
export PATH=/usr/local/ffmpeg/bin:$PATH
# 執(zhí)行 source 命令,是配置的環(huán)境變量生效
$ source ~/.bash_profile
如果你用的是zsh,而不是bash,只需要將上面的 .bash_profile 換成 .zprofile 。
f、檢查是否安裝成功:
$ ffmpeg -version
如果控制臺打印以下內(nèi)容說明安裝成功:
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 11.0.3 (clang-1103.0.32.62)
g、安裝成功后目錄結(jié)構(gòu):
$ tree
.
|____bin # 應(yīng)用程序,可在終端中使用
| |____ffmpeg # 用于轉(zhuǎn)碼的應(yīng)用程序 [文檔](http://ffmpeg.org/ffmpeg.html)
| |____ffplay # 用于播放的應(yīng)用程序 [文檔](http://ffmpeg.org/ffplay.html)
| |____ffprobe # 用于查看文件格式的應(yīng)用程序 [文檔](http://ffmpeg.org/ffprobe.html)
|____include # 頭文件
| |____libavcodec # 用于音頻/視頻編解碼,該庫是音視頻編解碼核心,實(shí)現(xiàn)了市面上可見的絕大部分解碼器的功能
| |____libavformat # 封裝格式處理,包含多媒體容器格式復(fù)用器和解復(fù)用器的庫,用于各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)和讀取音視頻幀等功能;音視頻的格式解析協(xié)議,為 libavcodec 分析碼流提供獨(dú)立的音頻或視頻碼流源
| |____libavfilter # 音視頻濾波器的開發(fā),如寬高比、裁剪、格式化、非格式化伸縮
| |____libavdevice # 硬件采集、加速、顯示,操作計(jì)算機(jī)中常用的音視頻捕獲或輸出設(shè)備
| |____libavutil # 包含一些公共的工具函數(shù)的使用庫,包括算數(shù)運(yùn)算、字符操作
| |____libswresample # 原始音頻格式轉(zhuǎn)碼
| |____libswscale # 視原始視頻格式轉(zhuǎn)換,用于視頻場景比例縮放、色彩映射轉(zhuǎn)換;圖像顏色空間或格式轉(zhuǎn)換,如 rgb565、rgb888 等與 yuv420 等之間轉(zhuǎn)換
| |____libpostproc # 同步、時(shí)間計(jì)算的簡單算法,用于后期效果處理;音視頻應(yīng)用的后處理,如圖像的去塊效應(yīng)
|____lib # 動(dòng)態(tài)庫
| |____libpostproc.55.dylib
| |____libswscale.dylib
| |____libavutil.56.51.100.dylib
| |____libavcodec.58.91.100.dylib
| |____libswscale.5.dylib
| |____libswresample.3.dylib
| |____libavfilter.7.dylib
| |____libavformat.58.dylib
| |____libavformat.dylib
| |____libavutil.dylib
| |____libavformat.58.45.100.dylib
| |____libavutil.56.dylib
| |____libswresample.3.7.100.dylib
| |____libavcodec.dylib
| |____libavdevice.58.dylib
| |____libswresample.dylib
| |____libavdevice.dylib
| |____libavfilter.7.85.100.dylib
| |____libpostproc.dylib
| |____libavfilter.dylib
| |____libpostproc.55.7.100.dylib
| |____libswscale.5.7.100.dylib
| |____libavdevice.58.10.100.dylib
| |____libavcodec.58.dylib
h、如果安裝的 ffmpeg 有問題,卸載命令:
$ cd /Users/mac/Downloads/ffmpeg-4.3.2
$ sudo make uninstall
2、方式二:Mac 平臺也可以選擇使用 Homebrew 的方式進(jìn)行安裝(使用 Homebrew 安裝很方便,但是無法根據(jù)自己的需要對 FFmpeg 進(jìn)行裁剪,源碼安裝和Homebrew安裝二選一):
$ brew install ffmpeg
查看 FFmpeg 是否安裝成功:
$ ffmpeg -version
如果可以成功查看版本號,說明安裝成功!