Ubuntu 18.04 手動編譯安裝 ffmpeg


   ffmpeg 是一個由提供對視頻、音頻和其他多媒體流文件進行處理功能的庫和程序構成的自由軟件項目,其常被用於適用於不同格式的音頻和視頻的錄影、轉換和流處理等場合。這里記錄在 Ubuntu 18.04 平台下安裝 ffmpeg 的過程。( 注:ffmpeg 目前已經可以通過 apt 直接進行安裝,見最后 )

 

安裝過程

  a.在 ffmpeg 官網上下載對應的安裝壓縮包,筆者使用的是 ffmpeg-4.1.tar.bz2 ,將其解壓至用戶主目錄下。

    tar -xvjf ffmpeg-4.1.tar.bz2    -C ~    //將文件解壓縮至用戶主目錄

  b.簡單的安裝過程在解壓獲得的 ffmpeg-4.1 目錄中的 INSTALL.md 文件中有一定的描述,首先對編譯安裝環境進行配置。

    ./configure            //檢測當前的編譯安裝環境

  此時可能會產生報錯 "nasm/yasm not found or too old" ,這是由於 ffmpeg 中部分優化代碼使用匯編編寫,對應的編譯過程需要使用匯編編譯器,這里有兩種選擇,一種是在 ./configure 時使用 --disable-yasm 選項,最終獲得是一個裁剪版本的 ffmpeg 工具集;另外一種是安裝對應的匯編編譯器,可使用下列命令進行安裝。

    sudo apt install yasm        //安裝 yasm 編譯器

  安裝完成后,需要重新執行上述 ./configure 操作,再進行下一步操作。

  c.正確的進行環境配置后,ffmpeg 會列出目前已經檢測到的環境的情況,包括檢測到的外部依賴庫和將要生成的應用程序等,完整的應用程序套件包括 ffmpeg( 用於視頻的轉碼 ),ffplay( 用於簡單的視頻播放和測試 )和 ffprobe( 用於查看文件格式 ),在配置的 programs 字段會有輸出。此時可能會出現 ffmpeg 准備生成的應用程序中沒有 ffplay 的情況,如下圖所示。

  

  這時可以查看一下對應的 External libraries 字段,看其中是否存在 SDL。

  

  SDL是編譯 ffplayer 所必須的外部庫,而 Ubuntu 環境並不會對其默認安裝,故而需要用戶手動安裝。這里注意,網上的一些大概五六年前的博客記錄的是要安裝 libsdl1.2-dev 的庫,而實際上目前(2018) ffmpeg 已經支持 SDL2,用戶可通過如下命令查看可以安裝的 sdl 版本。

    apt-cache search libsdl | grep libsdl        //查看目前可安裝的 sdl 庫版本

  這里選擇安裝的是 libsdl2-dev,使用 apt-install 安裝。

    sudo apt install libsdl2-dev        //安裝所需的 sdl 庫

  安裝完成后,可以查看下 /usr/include 目錄下是否含有對應的 SDL2 的庫,確認安裝過程成功,若上述目錄不存在,在后續的編譯過程可能會產生報錯 "fatal error: SDL.h: No such file or directory" 。完成上述配置后,再進行 ./configure ,就可以在 External libraries 字段中發現對應的 sdl2 字段,對應的 Programs 字段下也會有 ffplay 了。

  d.通過 make 執行編譯過程,編譯完成后,在解壓目錄下就應該已經存在 ffmpeg 、ffplay 和 ffprobe 的可執行程序了。此時執行 sudo make install 命令完成安裝過程。

    make              //編譯產生對應的庫文件和應用程序
    sudo make install      //安裝上述編譯結果,某些操作需要 root 權限,故而使用 sudo

    注意:上述安裝過程僅編譯了最基本的 ffmpeg 功能,並沒有包括所有 ffmpeg 支持的編碼格式等內容,用戶在編譯時需要根據自己的需要對編譯時的參數進行調整。

 

可能問題

  (1)手動編譯獲得的 ffmpeg 在使用時可能出現以下錯誤

  Unrecognized option 'crf'.   Error splitting the argument list: Option not found

  以及

  Unrecognized option 'preset'.   Error splitting the argument list: Option not found

  這常見於在使用 ffmpeg 時使用到了 libx264,但在實際的編譯過程中並有指定編譯 libx264 參數,默認不會編譯這一部分組件,從而產生報錯。解決方案可以是直接通過命令行安裝最新版本的 ffmpeg 或者通過指定對應參數的方式重新編譯 ffmpeg.重新編譯的參數具體可以參考 Compile FFmpeg for Ubuntu, Debian, or Mint

  若想要使用 apt 安裝 ffmpeg ,可以進入 ffmpeg 源碼目錄,通過 make uninstall 卸載之前安裝的手動編譯版本的 ffmpeg.之后通過 apt 命令安裝 ffmpeg。  

    sudo apt install ffmpeg    //通過 apt 安裝 ffmpeg

  參考:ffmpeg: Unrecognized option 'crf'. Error splitting the argument list: Option not found

  

  (2)在通過 apt 安裝 ffmpeg 后,在使用時可能會出現報錯。這是由於手動編譯安裝的 ffmpeg 安裝在 /usr/local/bin/ 目錄下,而通過 apt 安裝的 ffmpeg 位於 /usr/bin 目錄下。在卸載手動安裝的 ffmpeg 后上述應用程序信息並沒有直接更新,故而產生了以下報錯。

  bash: /usr/local/bin/ffmpeg: No such file or directory

  解決方式:對於終端或圖像界面,均可通過重新啟動的方式刷新上述可能的更新信息,從而可以正常使用。在命令行環境下,也可以直接通過命令 hash -r 刷新信息。

  參考:why ffmpeg command producing error in Ubuntu terminal?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM