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

相关推荐
blanks20201 天前
ffmpeg 学习笔记 通过命令行采集音频
ffmpeg
RTC实战笔记1 天前
实时互动数字人怎么做,才不是一个只会说话的视频?
音视频·数字人·rtc·数字人接入
Mahut5 天前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
花椒技术6 天前
HJPusher / HJPlayer SDK 实践:我们为什么把直播推播链路拆成一套可复用能力
设计模式·harmonyos·直播
RTC实战笔记13 天前
Android 实时音视频接入教程:媒体补充增强信息(SEI)
音视频·媒体·rtc
潜创微科技14 天前
HDMI1.3 无线传输芯片方案 空旷 150 米量产级音视频方案
音视频
VidDown14 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
换个昵称都难14 天前
音频格式之WAV
音视频
AI创界者14 天前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
u1521096484914 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频