FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 在Windows环境下,为FFmpeg集成音频编解码库,包括libogg、libvorbis和opencore-amr,涉及下载源码、配置、编译和安装步骤。首先,安装libogg,通过配置、make和make install命令完成,并更新PKG_CONFIG_PATH。接着,安装libvorbis,同样配置、编译和安装,并修改pkgconfig文件。之后,安装opencore-amr。最后,重新配置并编译FFmpeg,启用ogg和amr支持,通过ffmpeg -version检查是否成功。整个过程需确保环境变量设置正确,并根据路径添加相应库。

​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。
其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于opencore-amr。前文介绍了在Linux环境给FFmpeg集成vorbis和amr,接下来介绍如何在Windows环境给FFmpeg集成vorbis和amr。

1、安装libogg

libogg支持解析ogg文件结构,也可用于封装ogg格式,它的安装步骤说明如下。
(1)到https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libogg.html下载最新的libogg源码,比如2021年6月发布的libogg-1.3.5,该版本的源码下载地址是https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.gz。执行下面命令解压下载好的压缩包:

tar zxvf libogg-1.3.5.tar.gz
cd libogg-1.3.5

(2)进入解压后的libogg目录,运行下面命令配置libogg。

./configure --prefix=/usr/local/libogg --enable-static --disable-shared

(3)运行下面命令编译libogg。

make

(4)编译完成后,运行下面命令安装libogg。

make install

(5)给环境变量PKG_CONFIG_PATH添加libogg的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/libogg/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

2、安装libvorbis

Vorbis是一种免费的音频编码标准,libvorbis是Vorbis音频的编解码库。因为Vorbis音频通常封装在ogg格式中,所以libvorbis依赖于libogg,它的安装步骤说明如下。
(1)到https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvorbis.html下载最新的libvorbis源码,比如2020年7月发布的libvorbis-1.3.7,该版本的源码下载地址是https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz。执行下面命令解压下载好的压缩包:

tar zxvf libvorbis-1.3.7.tar.gz
cd libvorbis-1.3.7

(2)进入解压后的libvorbis目录,运行下面命令配置libvorbis。

./configure --prefix=/usr/local/vorbis --enable-static --disable-shared --disable-oggtest

(3)运行下面命令编译libvorbis。

make

(4)编译完成后,运行下面命令安装libvorbis。

make install

(5)给环境变量PKG_CONFIG_PATH添加vorbis的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/vorbis/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

3、安装opencore-amr

opencore-amr是AMR音频的编解码库,支持对AMR-NB和AMR-WB格式的音频进行编解码,它的安装步骤说明如下。
(1)到https://sourceforge.net/projects/opencore-amr/files/opencore-amr/下载最新的opencore-amr源码,比如2022年10月发布的opencore-amr-0.1.6,该版本的源码下载地址是https://nchc.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.6.tar.gz。执行下面命令解压下载好的压缩包:

tar zxvf opencore-amr-0.1.6.tar.gz
cd opencore-amr-0.1.6

(2)进入解压后的opencore-amr目录,运行下面命令配置opencore-amr。

./configure --prefix=/usr/local/amr --enable-static --disable-shared

(3)运行下面命令编译opencore-amr。

make

(4)编译完成后,运行下面命令安装opencore-amr。

make install

4、重新编译FFmpeg

由于FFmpeg默认未启用ogg和amr,因此需要重新配置FFmpeg,标明启用ogg和amr,然后重新编译安装FFmpeg。FFmpeg的Windows环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“8.1 Windows环境编译FFmpeg”,详细的启用步骤说明如下。
(1)确保下列路径均已加载至环境变量PKG_CONFIG_PATH

export PKG_CONFIG_PATH=/usr/local/libogg/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/vorbis/lib/pkgconfig:$PKG_CONFIG_PATH

(2)修改vorbis的pc描述文件,先执行下面命令进入vorbis的PKG目录:

cd /usr/local/vorbis/lib/pkgconfig

该目录下有vorbis.pc、vorbisenc.pc和vorbisfile.pc三个pc文件,三个都要修改。其中vorbis.pc的Libs参数末尾增加“ -logg”,也就是改成下面这样:

Libs: -L${libdir} -lvorbis -logg

vorbisenc.pc和vorbisfile.pc的Libs参数末尾都添加“ -lvorbis -logg”,比如vorbisenc.pc改成下面这样:

Libs: -L${libdir} -lvorbisenc -lvorbis -logg

又如vorbisfile.pc改成下面这样:

Libs: -L${libdir} -lvorbisfile -lvorbis -logg

(3)回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用ogg和amr。(增加了选项--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3)

./configure  --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libfreetype --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-iconv --enable-zlib --extra-cflags='-I/usr/local/lame/include -I/usr/local/libogg/include -I/usr/local/amr/include' --extra-ldflags='-L/usr/local/lame/lib -L/usr/local/libogg/lib -L/usr/local/amr/lib' --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32

(4)运行下面命令编译FFmpeg。

make clean
make -j4

(5)执行下面命令安装FFmpeg。

make install
mv /usr/local/ffmpeg/bin/*.lib /usr/local/ffmpeg/lib/

(6)运行以下命令查看FFmpeg的版本信息。

ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到“--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3”,说明FFmpeg正确启用了新增的音频格式ogg和amr。

目录
相关文章
|
4天前
|
监控 关系型数据库 分布式数据库
PolarDB开源项目成熟,强调插件开发与第三方工具集成,打造丰富生态。
【7月更文挑战第3天】PolarDB开源项目成熟,强调插件开发与第三方工具集成,打造丰富生态。插件开发涉及需求分析、接口设计、编码、测试和文档撰写。示例展示了性能监控插件的Go代码实现。此外,与DMS的数据迁移工具及Prometheus+Grafana监控系统的集成示例,展示了其易用性。PolarDB通过开放接口鼓励开发者参与生态建设,共同推动数据库技术进步。
15 1
|
6天前
|
机器学习/深度学习 人工智能 Java
Java与AI集成开发:机器学习模型部署
Java与AI集成开发:机器学习模型部署
|
6天前
|
存储 安全 Java
Spring Security与OAuth2集成开发
Spring Security与OAuth2集成开发
|
6天前
|
前端开发 Java 微服务
Spring Boot与微前端架构的集成开发
Spring Boot与微前端架构的集成开发
|
1天前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
5 0
|
4天前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
11 1
|
5天前
|
监控 负载均衡 Java
Spring Boot与微服务治理框架的集成
Spring Boot与微服务治理框架的集成
|
6天前
|
负载均衡 Java Nacos
Spring Boot与微服务治理框架的集成策略
Spring Boot与微服务治理框架的集成策略
|
10天前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
15 2
|
10天前
|
网络协议 前端开发 JavaScript
springboot-集成WebSockets广播消息
springboot-集成WebSockets广播消息

热门文章

最新文章