首頁 > 軟體

在 Mac OS X 環境中從原始碼編譯安裝 FFmpeg

2020-06-16 17:49:01

最近因為一個專案要求,需要開發實時視訊編解碼功能,準備採用 FFmpeg 以 x264 方式進行實時的視訊編解碼。Windows 以及 Linux 環境下的 FFmpeg 動態庫、標頭檔案等資源都非常容易獲得,編譯環境也容易構建,但 Mac OS X 下的開發編譯環境就不那麼容易了。因為 FFmpeg 預設沒有提供 Mac OS X 下的已經編譯好的動態連結庫(甚至連靜態庫都沒有提供),而網上找到的多是編譯好的單獨的 FFmpeg 可執行程式,滿足不了開發過程中對 FFmpeg 動態庫(或靜態庫)的編譯連線要求,因此考慮自己動手從原始碼編譯安裝 FFmpeg,以獲得 Mac OS X 下的 FFmpeg 動態連結庫(以及靜態庫)版本,並構建好開發編譯環境。

首先要確保 Mac OS X 下已經具備編譯開發環境,一般都是安裝 XCode 以及對應的 Command line tools。

然後,從 FFmpeg 官方網站下載 FFmpeg 最新版本的原始碼,可直接下載打包好的原始碼壓縮檔案,也可以通過 git 獲取完整原始碼映象,推薦用 git,命令如下:

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

這時不要急著馬上開始進行編譯設定!因為首先要明白一點,FFmpeg 是一個編解碼框架,能夠支援各種不同的編解碼器,並採用統一的 api 去呼叫。但其預設只提供了針對各種媒體格式的解碼器(基本上涵蓋得比較全了),而編碼器預設提供很少的幾個開源的格式(或者已經無需專利保護的格式)。所以,如果你需要 FFmpeg 具備支援多種媒體格式的編碼能力,你需要額外下載並安裝那些編碼器(主要是通過安裝這些編碼器獲得它們的標頭檔案、動態庫及靜態庫用於 FFmpeg 編譯),才能保證在 FFmpeg 編譯時載入這些編碼器的二進位制程式碼,使 FFmpeg 具備這些編碼功能。經過對比分析,就我這個專案需求而言,基本上編碼器需要先額外下載並安裝這幾個:x264、fdk-aac、libvpx、libvorbis、LAME(mp3)就足夠了。

接著,分別下載 x264、fdk-aac、libvpx、libvorbis、LAME 的原始碼,然後分別編譯安裝。注意在執行各自的 configure 建立編譯組態檔時,最好都強制帶上 --enable-static 和 --enable-shared 引數以確保生成靜態庫和動態庫。另外因為是在 Mac OS X 環境下編譯,因此在各自編譯完後,都要執行 sudo make install,安裝到預設的 /usr/local 目錄下相應位置(Mac OS X 下不推薦 /usr),因此不要在 configure 時指定 --prefix,就用預設的 /usr/local 目錄字首即可。

在安裝完上述編碼器後,就可以開始編譯安裝 FFmpeg 了。進入 FFmpeg 的原始碼目錄,執行以下命令:

./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-static --enable-shared

make

sudo make install

即可完成編譯安裝,FFmpeg 的標頭檔案將會複製到 /usr/local/include 下面相應位置,靜態庫及動態庫會被複製到 /usr/local/lib 目錄下,FFmpeg 的可執行程式(ffmpeg、ffprobe、ffserver)會被複製到 /usr/local/bin 目錄下,這樣 FFmpeg 的開發環境就構建好了。補充說明一點,因為預設情況下 Mac OS X 沒有 SDL,所以 FFmpeg 編譯時檢測不到 SDL 支援,就不會編譯 ffplay 這個可執行程式了。

Linux下編譯FFmpeg之下載原始檔並編譯 http://www.linuxidc.com/Linux/2012-02/54565.htm

Linux 編譯升級 FFmpeg 步驟 http://www.linuxidc.com/Linux/2013-08/88190.htm

CentOS 5.6 上安裝 FFMPEG http://www.linuxidc.com/Linux/2011-09/42793.htm

Ubuntu下安裝FFmpeg http://www.linuxidc.com/Linux/2012-12/75408.htm

Ubuntu 12.04下編譯ffmpeg  http://www.linuxidc.com/Linux/2013-02/78857.htm

Ubuntu 14.04下PPA安裝FFmpeg 2.2.2  http://www.linuxidc.com/Linux/2014-05/101322.htm


IT145.com E-mail:sddin#qq.com