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

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

相关推荐
aqi001 小时前
FFmpeg开发笔记(七十二)Linux给FFmpeg集成MPEG-5视频编解码器EVC
android·ffmpeg·音视频·流媒体
花开花落的个人博客3 小时前
ESP32-S3开发板播放wav音频
音视频
顾道长生'9 小时前
(Arxiv-2025)通过动态 token 剔除实现无需训练的高效视频生成
计算机视觉·音视频·视频生成
每次的天空17 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
爱分享的飘哥19 小时前
【V6.0 - 听觉篇】当AI学会“听”:用声音特征捕捉视频的“情绪爽点”
人工智能·音视频
菜包eo20 小时前
二维码驱动的独立站视频集成方案
网络·python·音视频
不太会编程的IT男21 小时前
在 Jetson Orin 开发套件上使用 Hardware Encoder / Decoder 构建 FFmpeg
ffmpeg·视频编解码·h.264
阿蒙Amon1 天前
【Python小工具】使用 OpenCV 获取视频时长的详细指南
python·opencv·音视频
m0_687399841 天前
写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
开发语言·c++·ffmpeg
aqi001 天前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体