《FFmpeg开发实战:从零基础到短视频上线》一书的第五章介绍了FFmpeg如何处理常见的MP3音频和AAC音频,其中MP3格式常用于音乐文件,而AAC格式常用于视频文件。
除此以外,近年又出现了专用于蓝牙音频的LC3格式,其全称是低复杂度通信编解码器(Low Complexity Communications Codec)。2020年9月15日,蓝牙技术联盟正式发布LC3技术规范,所有的蓝牙音频规范将强制使用LC3音频编解码器。
LC3和LC3 Plus是专为低延迟音频传输而设计的音频编解码器,LC3 Plus在LC3的基础上还提出了以下功能:
1、每帧音频的持续时间为2.5ms或5ms。
2、采用高分辨率模式,采样率为48KHz或96KHz。
liblc3是一个开源的LC3音频编解码库,同时内置了LC3和LC3 Plus功能,从7.1版本开始的最新FFmpeg源码已经支持LC3音频的编码器liblc3。
接下来以华为的欧拉系统为例,介绍如何在Linux环境给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
这两个工具已经在之前libdav1d的安装过程中安装了,这里不再赘述。
2、将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。
cd /usr/local/src
tar zxvf liblc3-1.1.3.tar.gz
cd liblc3-1.1.3
3、进入解压后的build目录,运行下面命令配置liblc3。
mkdir build
cd build
meson setup
4、运行下面命令编译liblc3。
ninja
5、编译完成后,运行下面命令安装liblc3。
ninja install
二、让FFmpeg启用liblc3
由于FFmpeg默认未启用liblc3,因此需要重新配置FFmpeg,标明启用liblc3,然后重新编译安装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,并且按照之前的文章安装了H.266的编码器libvvenc,然后执行以下的liblc3启用步骤。
1、回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用liblc3。(增加了选项" --enable-liblc3")
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-liblc3 --enable-iconv --enable-gpl --enable-nonfree
2、运行下面命令编译FFmpeg。
make clean
make -j4
3、执行下面命令安装FFmpeg。
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-liblc3 --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-liblc3",说明FFmpeg已经启用了LC3音频的编解码库liblc3。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。