FFmpeg 是多媒體處理瑞士刀,Ubuntu 官方倉庫版本常較舊或缺少特定編解碼器支援。本文記錄從原始碼編譯安裝最新版 FFmpeg 的完整流程,含關鍵依賴 yasm 處理與常見錯誤排查。
sudo apt-get update
sudo apt-get install -y build-essential git pkg-config \
libx264-dev libx265-dev libvpx-dev libfdk-aac-dev \
libmp3lame-dev libopus-dev libass-dev libfreetype6-dev \
libvorbis-dev libtheora-dev libwebp-dev libdrm-dev
cd /usr/local/src
wget https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
注意:勿使用 --prefix 指定非標準路徑,否則 FFmpeg configure 階段可能找不到 yasm。
cd /usr/local/src
wget https://ffmpeg.org/releases/ffmpeg-6.0.tar.bz2
tar xjf ffmpeg-6.0.tar.bz2
cd ffmpeg-6.0
./configure \
--prefix=/usr/local \
--enable-gpl --enable-nonfree \
--enable-libx264 --enable-libx265 \
--enable-libvpx --enable-libfdk-aac \
--enable-libmp3lame --enable-libopus \
--enable-libass --enable-libfreetype \
--enable-libvorbis --enable-libtheora \
--enable-libwebp --enable-libdrm \
--enable-shared \
--enable-pthreads \
--enable-version3
make -j$(nproc)
sudo make install
sudo ldconfig
ffmpeg -version
ffmpeg -codecs | grep -E "264|265|vp9|aac|mp3"
ffmpeg -encoders | grep -E "libx264|libx265|libfdk_aac"
| 錯誤現象 | 原因與對策 |
|---|---|
ERROR: yasm not found | yasm 未安裝或不在 PATH,重新安裝 yasm 並確認 which yasm |
ERROR: libx264 not found | 缺少開發套件,安裝 libx264-dev 或從原始碼編譯 x264 |
undefined reference to symbol | 庫版本不匹配,執行 sudo ldconfig 並重新編譯 |
執行時 error while loading shared libraries | 動態連結失敗,確認 /usr/local/lib 在 /etc/ld.so.conf.d/ 中並重跑 ldconfig |
--enable-static --disable-shared --pkg-config-flags="--static" 產生無相依性執行檔sudo add-apt-repository ppa:savoury1/ffmpeg6 && sudo apt update && sudo apt install ffmpeg(較新版本)/usr/local/src/ffmpeg-build-config.txt 便於重建checkinstall 產生 .deb 套件管理安裝從原始碼編譯 FFmpeg 雖較繁瑣,但可精確控制啟用功能、優化指令集(--cpu=native)並獲得最新編解碼器支援,是多媒體伺服器部署的標準作法。