《FFmpeg開發實戰:從零基礎到短視頻上線》該書的第一章介紹瞭如何在Linux環境給FFmpeg集成H.264和H.265的編碼器,如今H.266的編碼器vvenc也日漸成熟,從7.1版本開始的最新FFmpeg源碼已經支持H.266的編碼器vvenc。
H.266是H.265的升級版本,H.265的視頻編碼標準為HEVC(High Efficiency Video Coding,高效視頻編碼),H.266的視頻編碼標準為VVC(Versatile Video Coding,多功能視頻編碼)。其中VVC是HEVC的後繼者,目標是在相同視覺質量下將比特率降低50%。
至於VVEnc(Versatile Video Encoder)是一個開源的高效視頻編碼器,它實現了最新的視頻編碼標準VVC,能夠把視頻數據按照H.266標準編碼為VVC格式。VVEnc的源碼託管地址為https://github.com/fraunhoferhhi/vvenc ,國內的鏡像地址為https://gitee.com/mirrors/vvenc 。
接下來以華為的歐拉系統為例,介紹如何在Linux環境給FFmpeg集成H.266的編碼器vvenc,具體的操作步驟説明如下:
一、編譯安裝VVEnc
先下載最新的vvenc源碼,再把vvenc源碼包上傳到Linux服務器的/usr/local/src目錄下。接着登錄Linux服務器的控制枱,執行下面命令解壓源碼包:
cd /usr/local/src
unzip vvenc-v1.13.1.zip
然後執行下面命令配置vvenc的編譯環境:
cd vvenc-v1.13.1
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 --install-prefix=/usr/local ..
如果看到cmake命令返回類似下面的“Configuring done”和“Generating done”字樣,就表示配置好了vvenc的編譯環境:
-- VVENC_ENABLE_THIRDPARTY_JSON: ON
-- Performing Test SUPPORTED_mxsave
-- Performing Test SUPPORTED_mxsave - Success
-- Performing Test SUPPORTED_msse4_2
-- Performing Test SUPPORTED_msse4_2 - Success
-- Performing Test SUPPORTED_mavx2
-- Performing Test SUPPORTED_mavx2 - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/vvenc-v1.13.1/build
於是執行下面命令編譯和安裝vvenc,編譯完成的vvenc庫將會安裝到cmake指定的/usr/local目錄。
make
make install
二、編譯安裝FFmpeg
先下載最新的FFmpeg源碼(版本號需大於等於7.1),再把FFmpeg源碼包上傳到Linux服務器的/usr/local/src目錄下。接着登錄Linux服務器的控制枱,執行下面命令解壓源碼包:
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip
確保Linux環境已經按照《FFmpeg開發實戰:從零基礎到短視頻上線》該書第一章的“1.2 Linux系統安裝FFmpeg”安裝了H.264的編碼器libx264和H.265的編碼器libx265,然後執行下面命令配置FFmpeg的編譯環境:
cd ffmpeg-n7.1.1
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree
配置完畢執行下面命令編譯和安裝FFmpeg,編譯完成的ffmpeg庫將會安裝到configure指定的/usr/local/ffmpeg目錄。
make
make install
三、查看FFmpeg的安裝結果
運行下面命令查看FFmpeg的安裝版本:
ffmpeg -version
上面命令返回的FFmpeg版本信息如下:
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 10.3.1 (GCC)
configuration: --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
根據以上返回的版本信息,可知已安裝的FFmpeg版本號為7.1.1,同時configuration這行找到“--enable-libvvenc”,説明FFmpeg已經啓用了H.266的編碼器libvvenc。
更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書。