FFmpeg 編譯安裝和靜態安裝
簡介
FFmpeg 是一個領先的多媒體框架,能夠解碼、編碼、轉碼、復用、解復用、流化、過濾和播放幾乎所有人類和機器創建的格式。本指南將詳細介紹如何在 CentOS 8.5.2111 系統上從源代碼編譯并安裝 FFmpeg 6.1.1 版本。從源代碼編譯安裝可以確保您獲得最新版本的功能,并可以根據您的特定需求進行定制。本博客主要依賴于 manus 生成,我通過 manus 給出的方案逐步運行并安裝成功,并且我也對比了下預編譯靜態安裝和編譯安裝的差別。
1. 預編譯靜態安裝(新手推薦)
預編譯靜態安裝是普通用戶的首選,速度快操作少,只需要按照自己機器的型號和需要安裝的版本進行選擇,1分鐘即裝即用,但是缺點是有些動態庫不支持,速度慢等等,但是我不是CV方向的深度用戶,所以我沒有卡到靜態安裝造成的瓶頸上
首先,我們要去官方預編譯庫中選擇自己需要的版本,https://github.com/BtbN/FFmpeg-Builds/releases
其次,依次執行下面的命令就可以成功安裝了,耗時取決于你的網速
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-6.1.1-amd64-static.tar.xztar xf ffmpeg-6.1.1-amd64-static.tar.xzcd ffmpeg-n6.1-latest-linux64-gpl-6.1/bin# 或者你可以選擇添加路徑的方式
sudo install -m 755 ffmpeg ffprobe /usr/local/binffmpeg -version
2. 編譯安裝
編譯安裝版本選擇更多,功能選擇更多,對依賴包的使用更加極致,但是缺點就是安裝的慢且復雜。不同的機器在編譯配置的時候所需要的依賴包不同,我這里也是基于 manus 給出的建議進行羅列的,但在配置 ffmpeg configure
的時候一定不能報錯,哪個包缺少或者版本依賴不對都要修改,否則在 make
編譯的時候是通不過的
1. 更新系統
首先,更新您的系統,確保所有已安裝的軟件包都是最新版本。這有助于避免潛在的依賴問題。
sudo dnf update -y
2. 安裝開發工具
安裝編譯 FFmpeg 所需的開發工具和庫。Development Tools
組包含了 GCC、make 等基本編譯工具。
sudo dnf groupinstall "Development Tools" -y
sudo dnf install epel-release -y
sudo dnf install git nasm yasm autoconf automake cmake libtool -y
3. 安裝必要的依賴庫
FFmpeg 依賴于許多第三方庫來支持不同的音視頻格式和功能。以下是一些常用的、推薦安裝的庫。您可以根據需要選擇性安裝。
重要提示: CentOS 8 已經停止維護,其官方倉庫可能不再更新。您可能需要啟用 PowerTools 或 CodeReady Linux Builder (CRB) 倉庫來獲取一些依賴。
啟用 PowerTools 倉庫 (如果尚未啟用):
sudo dnf config-manager --set-enabled PowerTools
或者,對于某些較新的 CentOS 8 版本,可能需要啟用 CodeReady Linux Builder (CRB) 倉庫:
sudo dnf config-manager --set-enabled codeready-builder
安裝依賴庫:
sudo dnf install \ SDL2-devel \ zlib-devel \ bzip2-devel \ libXext-devel \ libXfixes-devel \ libXrandr-devel \ libXrender-devel \ libXv-devel \ libva-devel \ libvdpau-devel \ alsa-lib-devel \ pulseaudio-libs-devel \ libwebp-devel \ openjpeg2-devel \ lame-devel \ libvorbis-devel \ libtheora-devel \ libvpx-devel \ x264-devel \ x265-devel \ opus-devel \ v4l-utils-devel \ frei0r-devel \ libass-devel \ libbluray-devel \ libbs2b-devel \ libcaca-devel \ libcdio-paranoia-devel \ libdrm-devel \ libiec61883-devel \ libmodplug-devel \ libopenmpt-devel \ librtmp-devel \ libssh-devel \ libv4l-devel \ libxml2-devel \ openal-soft-devel \ openssl-devel \ speex-devel \ teem-devel \ twolame-devel \ vid.stab-devel \ vo-amrwbenc-devel \ wavpack-devel \ yasm-devel \ zimg-devel \ -y
請注意,上述列表包含了很多可選的庫。如果您不需要所有功能,可以只安裝您需要的庫。例如,如果您不需要 H.264 編碼,可以不安裝 x264-devel
。
編譯和安裝 FFmpeg 6.1.1
1. 下載 FFmpeg 源代碼
從 FFmpeg 官方網站下載 6.1.1 版本的源代碼。您可以使用 wget
命令下載。
cd /usr/local/src
sudo wget https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.bz2
sudo tar -xf ffmpeg-6.1.1.tar.bz2
cd ffmpeg-6.1.1
2. 配置編譯選項
進入 FFmpeg 源代碼目錄后,運行 ./configure
命令來配置編譯選項。您可以根據需要啟用或禁用特定的組件和編解碼器。以下是一個常用的配置示例,包含了許多常用功能。
sudo ./configure \ --prefix=/usr/local/ffmpeg \ --enable-shared \ --enable-gpl \ --enable-nonfree \ --enable-libmp3lame \ --enable-libopus \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libwebp \ --enable-libtheora \ --enable-libvorbis \ --enable-libass \ --enable-libfreetype \ --enable-libfribidi \ --enable-libharfbuzz \ --enable-libfontconfig \ --enable-libspeex \ --enable-libv4l2 \ --enable-libxvid \ --enable-opencl \ --enable-opengl \ --enable-pthreads \ --enable-version3 \ --enable-hardcoded-tables \ --enable-avfilter \ --enable-postproc \ --enable-runtime-cpudetect \ --disable-debug \ --disable-static
配置選項說明:
--prefix=/usr/local/ffmpeg
: 指定 FFmpeg 的安裝路徑。建議安裝到/usr/local/
下的獨立目錄,以便于管理。--enable-shared
: 編譯共享庫,這對于其他程序調用 FFmpeg 庫非常有用。--enable-gpl
: 啟用 GPL 許可下的組件。如果您計劃分發您的應用程序,請注意 GPL 許可的限制。--enable-nonfree
: 啟用非自由許可下的組件,例如x264
和x265
。同樣,請注意許可限制。--enable-libmp3lame
,--enable-libopus
,--enable-libvpx
,--enable-libx264
,--enable-libx265
,--enable-libwebp
,--enable-libtheora
,--enable-libvorbis
,--enable-libass
,--enable-libfreetype
,--enable-libfribidi
,--enable-libharfbuzz
,--enable-libfontconfig
,--enable-libspeex
,--enable-libv4l2
,--enable-libxvid
: 啟用對特定外部庫的支持。只有安裝了相應的*-devel
包,這些選項才能成功啟用。--disable-debug
: 禁用調試信息,可以減小編譯后的文件大小。--disable-static
: 禁用靜態庫編譯,只編譯共享庫。
如果 configure
命令執行成功,它會顯示一個總結,列出將要編譯的組件和啟用的功能。如果出現錯誤,通常是缺少某個依賴庫,您需要根據錯誤信息安裝相應的 *-devel
包。
3. 編譯和安裝
配置完成后,使用 make
命令編譯 FFmpeg,然后使用 make install
進行安裝。
sudo make -j$(nproc)
sudo make install
make -j$(nproc)
會利用所有可用的 CPU 核心進行并行編譯,從而加快編譯速度。
配置環境變量
為了讓系統能夠找到 FFmpeg 命令和庫,需要配置環境變量。
1. 配置動態鏈接庫路徑
創建或編輯 /etc/ld.so.conf.d/ffmpeg.conf
文件,添加 FFmpeg 庫的路徑。
sudo echo "/usr/local/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf
sudo ldconfig
ldconfig
命令會更新動態鏈接庫緩存。
2. 配置 PATH 環境變量
將 FFmpeg 的可執行文件路徑添加到系統的 PATH
環境變量中,這樣您就可以在任何位置直接運行 ffmpeg
命令。
sudo echo 'export PATH="/usr/local/ffmpeg/bin:$PATH"' | sudo tee /etc/profile.d/ffmpeg.sh
source /etc/profile.d/ffmpeg.sh
為了使 PATH
環境變量永久生效,您可能需要重新登錄或重啟終端會話。
驗證安裝
安裝完成后,驗證 FFmpeg 是否已成功安裝并可正常使用。
ffmpeg -version