《FFmpeg開發實戰:從零基礎到短視頻上線》一書的第五章介紹了FFmpeg如何處理常見的MP3音頻和AAC音頻,其中MP3格式常用於音樂文件,而AAC格式常用於視頻文件。
除此以外,近年又出現了專用於藍牙音頻的LC3格式,其全稱是低複雜度通信編解碼器(Low Complexity Communications Codec)。2020年9月15日,藍牙技術聯盟正式發佈LC3技術規範,所有的藍牙音頻規範將強制使用LC3音頻編解碼器。
liblc3是一個開源的LC3音頻編解碼庫,同時內置了LC3和LC3 Plus功能,從7.1版本開始的最新FFmpeg源碼已經支持LC3音頻的編碼器liblc3。
接下來以微軟的視窗系統為例,介紹如何在Windows環境給FFmpeg集成LC3音頻的編碼器liblc3,具體的操作步驟説明如下:
一、配置liblc3
liblc3是一款LC3音頻的編解碼庫。它的源碼託管頁面在 https://github.com/google/liblc3 ,最新版本是2025年2月發佈的liblc3-1.1.3,該版本的源碼包下載地址是 https://codeload.github.com/google/liblc3/tar.gz/refs/tags/v1.1.3 。
liblc3的配置步驟説明如下。
1、安裝編譯工具meson和ninja
meson和ninja是基於Python語言的編譯工具,故需確保Windows系統已經安裝了Python3。另外,還要按照《FFmpeg開發實戰:從零基礎到短視頻上線》第一章的“1.3.2 安裝依賴的Windows軟件”給電腦安裝Visual Studio 2022。
接着依次選擇Windows開始菜單的“Visual Studio 2022”→“x64 Native Tools Command Prompt for VS 2022”,打開Visual Studio 2022的命令行界面,執行以下命令安裝meson和ninja。
pip3 install meson
pip3 install ninja
2、使用meson配置liblc3
先下載最新的liblc3源碼,解壓下載後的源碼包,再從Visual Studio 2022的命令行進入liblc3源碼目錄:
cd liblc3-1.1.3
然後運行下面命令生成liblc3的VS工程:
meson setup build --buildtype=release --backend=vs
配置完成後,liblc3源碼目錄下出現build目錄,裏面便是meson給liblc3生成的VS工程。
二、編譯liblc3
打開Visual Studio 2022,在歡迎頁面單擊右側的“打開項目或解決方案”,在彈出的文件對話框中選擇liblc3-1.1.3\build目錄下的lc3.sln。
打開liblc3工程後,依次選擇頂部菜單:生成→生成→生成lc3-1,Visual Studio就開始編譯lc3模塊。編譯過程可在Visual Studio界面下方觀察,直到編譯完成如下圖所示。
此時可在liblc3-1.1.3\build目錄下找到src目錄,該目錄下的lc3.lib和lc3-1.dl就是編譯生成的lc3庫文件。
三、安裝liblc3
確保Windows系統已經按照《FFmpeg開發實戰:從零基礎到短視頻上線》第一章“1.3 Windows系統安裝FFmpeg”的説明安裝配置了MSYS,再按照以下步驟在MSYS環境安裝liblc3。
1、在msys64的/usr/local目錄下新建liblc3目錄,並在該目錄下創建lib子目錄;
2、把liblc3工程中build\src目錄下的lc3.lib和lc3-1.dll兩個文件複製到第一步創建的lib目錄;
3、在lib目錄下創建pkgconfig子目錄,並把liblc3工程的build\meson-private\lc3.pc複製到pkgconfig目錄;然後打開lc3.pc,把開頭一行改成下面這樣。
prefix=/usr/local/liblc3
4、把liblc3工程的include目錄複製到msys64的/usr/local/liblc3目錄;
經過以上步驟操作後的liblc3目錄結構如下所示。
/usr/local/liblc3
|--------------- lib
| |----- lc3.lib
| |----- lc3-1.dll
| |----- pkgconfig
| |----- lc3.pc
|--------------- include
| |----- lc3.h
| |----- lc3_cpp.h
| |----- lc3_private.h
四、編譯安裝FFmpeg
先下載最新的FFmpeg源碼(版本號需大於等於7.1),再把FFmpeg源碼包複製到MSYS環境的/usr/local/src目錄下。接着在MSYS控制枱執行下面命令解壓源碼包:
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip
確保MSYS環境已經按照《FFmpeg開發實戰:從零基礎到短視頻上線》該書第八章的“8.1.1 給FFmpeg集成x264”和“8.1.5 給FFmpeg集成x265”安裝了H.264的編碼器libx264和H.265的編碼器libx265,也按照該書第十章的“10.1.1 FFmpeg集成SDL”安裝了Windows系統的SDL2庫,並且按照之前的文章安裝了H.266的編碼器libvvenc,然後執行下面命令配置FFmpeg的編譯環境:
cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/liblc3/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
配置完畢執行下面命令編譯和安裝FFmpeg,編譯完成的ffmpeg庫將會安裝到configure指定的/usr/local/ffmpeg目錄。
make
make install
cp /usr/local/liblc3/lib/lc3-1.dll /usr/local/ffmpeg/bin
五、查看FFmpeg的安裝結果
運行下面命令查看FFmpeg的安裝版本:
ffmpeg -version
上面命令返回的FFmpeg版本信息如下:
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
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-liblc3”,説明FFmpeg已經啓用了LC3音頻的編解碼庫liblc3。
更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書。