一、安裝編譯工具
sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev
說明:
autoconf
:生成 configure 腳本,用于自動配置源碼。automake
:與 autoconf 配合,生成 Makefile。build-essential
:包括 gcc、g++、make 等基本編譯工具。cmake
:x265 等依賴庫需要 CMake 來生成構建文件。git
:用于從 Git 倉庫(如 x264、fdk-aac)克隆源碼。pkg-config
:用于查找已安裝庫的頭文件和庫路徑。nasm
與yasm
:匯編優化工具,x264 和 FFmpeg 使用它提高性能。libtool
:統一管理庫文件的編譯、鏈接和安裝過程,屏蔽不同平臺的底層差異zlib1g-dev
:用于處理壓縮數據,如 PNG 解碼或某些容器格式,FFmpeg 核心功能需要。
二、ffmpeg依賴庫(apt安裝)
2.1 有哪些ffmpeg依賴庫
分類 | 庫名稱 | 用途 | FFmpeg 配置選項 | Ubuntu 安裝命令 |
---|---|---|---|---|
視頻編碼 | libx264-dev | H.264 視頻編碼(高效、廣泛使用) | --enable-libx264 | sudo apt install -y libx264-dev |
libx265-dev | H.265/HEVC 視頻編碼(高壓縮率,適用于 4K/8K) | --enable-libx265 | sudo apt install -y libx265-dev | |
libvpx-dev | VP8/VP9 視頻編碼(用于 WebM 格式) | --enable-libvpx | sudo apt install -y libvpx-dev | |
libtheora-dev | Theora 視頻編碼(開源視頻格式) | --enable-libtheora | sudo apt install -y libtheora-dev | |
libxvidcore-dev | Xvid(MPEG-4)視頻編碼 | --enable-libxvid | sudo apt install -y libxvidcore-dev | |
libaom-dev | AV1 視頻編碼(下一代開源視頻格式) | --enable-libaom | sudo apt install -y libaom-dev | |
音頻編碼 | libfdk-aac-dev | 高質量 AAC 音頻編碼(非自由軟件,需 --enable-nonfree ) | --enable-libfdk-aac | sudo apt install -y libfdk-aac-dev |
libmp3lame-dev | MP3 音頻編碼 | --enable-libmp3lame | sudo apt install -y libmp3lame-dev | |
libvorbis-dev | Vorbis 音頻編碼(常用于 Ogg 容器) | --enable-libvorbis | sudo apt install -y libvorbis-dev | |
libopus-dev | Opus 音頻編碼(低延遲、高質量,適合網絡傳輸) | --enable-libopus | sudo apt install -y libopus-dev | |
其他常用功能庫 | libass-dev | 字幕渲染(支持 ASS/SSA 字幕格式) | --enable-libass | sudo apt install -y libass-dev |
libfreetype6-dev | 字體渲染(用于字幕和文本疊加) | --enable-libfreetype | sudo apt install -y libfreetype6-dev | |
libsdl2-dev | SDL 庫,用于 FFmpeg 的 ffplay 播放器 | --enable-sdl2 | sudo apt install -y libsdl2-dev | |
zlib1g-dev | 壓縮支持(用于處理壓縮元數據,如 PNG 或某些容器格式) | --enable-zlib | sudo apt install -y zlib1g-dev | |
libva-dev | 硬件加速解碼/編碼(VAAPI,Intel/AMD GPU) | --enable-vaapi | sudo apt install -y libva-dev | |
libvdpau-dev | 硬件加速解碼(VDPAU,NVIDIA GPU) | --enable-vdpau | sudo apt install -y libvdpau-dev | |
libdav1d-dev | AV1 視頻解碼(高性能 AV1 解碼器) | --enable-libdav1d | sudo apt install -y libdav1d-dev | |
libopenjpeg-dev | JPEG 2000 圖像/視頻編碼 | --enable-libopenjpeg | sudo apt install -y libopenjpeg-dev |
2.2 常見案例
最小化配置:x264、x265、fdk-aac 和 lame
安裝依賴:
sudo apt install -y libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev
ffmpeg 4.4.1 編譯:
wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1./configure \--prefix="$(pwd)/../ffmpeg_build" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install
說明:
--enable-gpl
和--enable-nonfree
是 x264、x265 和 fdk-aac 必需的。--extra-cflags
和--extra-ldflags
指定依賴庫的頭文件和庫路徑。--disable-doc
跳過文檔生成,節省時間。make -j$(nproc)
使用所有 CPU 核心加速編譯。
這是編譯、安裝的后的目錄結構:
laow@laow-pc:~/Downloads$ tree ffmpeg_build/ -L 2
ffmpeg_build/
├── bin
│ ├── ffmpeg
│ └── ffprobe
├── include
│ ├── libavcodec
│ ├── libavdevice
│ ├── libavfilter
│ ├── libavformat
│ ├── libavutil
│ ├── libpostproc
│ ├── libswresample
│ └── libswscale
├── lib
│ ├── libavcodec.a
│ ├── libavdevice.a
│ ├── libavfilter.a
│ ├── libavformat.a
│ ├── libavutil.a
│ ├── libpostproc.a
│ ├── libswresample.a
│ ├── libswscale.a
│ └── pkgconfig
└── share└── ffmpeg
三、ffmpeg依賴庫(手動編譯安裝)
所有源碼下載:ffmpeg4.4.1源代碼
3.1 編譯依賴庫
(1) 編譯x264
x264 是一個 H.264 視頻編碼庫,FFmpeg 使用其進行 H.264 編碼。
git clone https://code.videolan.org/videolan/x264.git
cd x264./configure --prefix="$(pwd)/../3rdparty" --enable-staticmake -j$(nproc) && make install
(2) 編譯x265
x265 用于 H.265/HEVC 編碼,需安裝 CMake。
wget https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
tar xzvf x265_3.5.tar.gz && cd x265_3.5
mkdir tmp && cd tmpcmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../3rdparty \
../sourcemake -j$(nproc) && make install
(3) 編譯fdk-aac
fdk-aac 是高質量 AAC 編碼器,需 --enable-nonfree 編譯 FFmpeg。
wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz
tar -xf fdk-aac-2.0.2.tar.gz && cd fdk-aac-2.0.2/# 生成 configure 腳本
autoreconf -fiv./configure --prefix="$(pwd)/../3rdparty" --disable-sharedmake -j$(nproc) && make install
(4) 編譯mp3lame
LAME 用于 MP3 編碼,簡單易用。
wget https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz
tar -xf lame-3.100.tar.gz && cd lame-3.100./configure --prefix="$(pwd)/../3rdparty" --enable-static --disable-sharedmake -j$(nproc) && make install
3.2 編譯ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1export PKG_CONFIG_PATH=$(pwd)/../3rdparty/lib/pkgconfig./configure \--prefix="$(pwd)/../ffmpeg_build" \--extra-cflags="-I$(pwd)/../3rdparty/include" \--extra-ldflags="-L$(pwd)/../3rdparty/lib" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install