FFmpeg开发笔记(六十五)Linux给FFmpeg集成LC3音频的编码器liblc3

《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开发实战:从零基础到短视频上线》一书。

相关推荐
lovep18 小时前
音频-文本对比学习:LARGE-SCALE CONTRASTIVE LANGUAGE-AUDIO PRETRAINING论文翻译和理解
音视频·glap·音频理解·音频对比学习·laion-audio·音频检索
codelancera1 天前
ffmpeg-调整视频分辨率
ffmpeg·音视频
天向上1 天前
手机端的音视频界面或者图片文档界面共享给大屏
智能手机·音视频·多平台·手机投屏·多屏互动
ECC&SM91 天前
Video_AVI_Packet(1)
笔记·音视频
Evaporator Core1 天前
Windows批处理脚本自动合并当前目录下由You-get下载的未合并的音视频文件
windows·音视频
ue星空2 天前
UE5配置MRQ编解码器输出MP4视频
ue5·音视频
CV实验室2 天前
CVPR 2025 | 北大团队SLAM3R:单目RGB长视频实时重建,精度效率双杀!
人工智能·计算机视觉·论文·音视频
chenchao_shenzhen2 天前
RK3568嵌入式音视频硬件编解码4K 60帧 rkmpp FFmpeg7.1 音视频开发
ffmpeg·音视频·rk3588·音视频开发·嵌入式开发·瑞芯微rk3568·硬件编解码
音视频牛哥2 天前
H.264、H.265 到 H.266:编码标准演进、RTSP支持与实时视频系统实战
音视频·大牛直播sdk·h.266编码·rtmp h.266·rtsp h.266·h.266解码·h.265和h.266差异
从后端到QT2 天前
RTCP详解
服务器·音视频·实时音视频·rctp