音視頻 day13 手動編譯FFmpeg

1. AAC 是什麼?目前 MP3 已經如此流行,爲何還會出現 AAC?

  • AAC(Advanced Audio Coding,高級音頻編碼),是由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia 等公司共同開發的有損音頻編碼和文件格式
  • AAC:編碼方面以較小的文件大小提供更高的質量,解碼方面須要較少的處理能力

2. AAC LC 到 AAC HE V2 的發展歷程?(瞭解便可)

image.png

image.png

3. 什麼是編碼器?什麼是解碼器?常見的 ACC 編解碼器是哪兩個?

  • 若是想對 PCM 數據進行AAC 編碼壓縮,那麼就要用到 AAC 編碼器(encoder)
  • 若是想將 AAC 編碼後的數據解壓出 PCM 數據,那麼就要用到 AAC 解碼器(decoder)
  • ffmpeg_aac 和 fdk_aac

4. 下載 FFMpeg 的源代碼

image.png

5. 手動編譯 ffmpeg 的命令以下:

// 先保證以下庫已經安裝html

  • brew install yasmbrew install sdl2brew install fdk-aacbrew install x264brew install x265

// 到 FFmpeg 的源碼文件夾中,運行以下命令bash

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265
複製代碼
// 用以指定編譯好的 FFmpeg 安裝到哪一個目錄
--prefix=/usr/local/ffmpeg
// 生成動態庫
--enable-shared
// 不生成靜態庫
--disable-static
// x26四、x265 要求開啓GPL License
--enable-gpl
// fdk-aac 與 GPL 不兼容,須要經過開啓 nonfree 進行配置
--enable-nonfree
// 將 fdk-acc 內置到 FFmpeg 中
--enable-libfdk-aac
// 將 x264 內置到 FFmpeg 中
--enable-libx264
// 將 x265 內置到 FFmpeg 中
--enable-libx265
複製代碼
  • 你能夠經過 configure --help 命令查看每個配置項的做用
  • 最後運行 make install 或者 sudo make install 完成手動編譯FFmpeg

6. 經過以下命令驗證咱們手動編譯 FFmpeg 成功,而且成功集成了 fdk_aac

ffmpeg -ar 44100 -ac 2 -f s16le -i 44100_s16le_2.pcm -c:a libfdk_aac out.aac
複製代碼

7. 卸載原來用 brew 安裝的 FFMpeg

brew uninstall ffmpeg
複製代碼

8. 將 ffmpeg 相關命令配置到環境變量 path 中

  • 找到 open ~/.bash_profile 文件,寫入以下內容
export FFMpeg=/usr/local/ffmpeg
export PATH=$FFMpeg/bin:$PATH
複製代碼
  • 讓配置生效 source ~/.bash_profile
  • 而後從新打開一個命令行工具,直接輸入 ffmpeg 能夠有提示,即表示成功

9. 什麼是 Makefile 文件?

  • Makefile 描述了整個項目的編譯和連接等規則,可使得項目的編譯變得自動化,不須要每次都手動輸入一堆源文件和參數
  • 好比哪些文件須要編譯?哪些文件不須要編譯?哪些文件須要先編譯?哪些文件須要後編譯?等等

10. 思考 ffmpeg 是如何找到 fdk_aac 庫的呢?

  • otool -L libavcodec.dylib

image.png

image.png

相關文章
相關標籤/搜索