FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 本文档介绍了在Windows环境下如何为FFmpeg集成libopus和libvpx库。首先,详细阐述了安装libopus的步骤,包括下载源码、配置、编译和安装,并更新环境变量。接着,同样详细说明了libvpx的安装过程,注意需启用--enable-pic选项以避免编译错误。最后,介绍了重新配置并编译FFmpeg以启用这两个库,通过`ffmpeg -version`检查是否成功集成。整个过程参照了《FFmpeg开发实战:从零基础到短视频上线》一书的相关章节。

​MP4是最常见的视频封装格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3 自行编译与安装FFmpeg”介绍了如何给FFmpeg集成x264和x265两个库,从而支持H.264和H.265两种标准的编解码。

视频的封装格式除了悠久的MP4和ASF之外,还有较新的WebM格式,该格式的音频编码主要采用Opus,视频编码采用VP8或者VP9。其中Opus的编解码库为libopus,VP8和VP9的编解码库为libvpx。前文介绍了在Linux环境给FFmpeg集成libopus和libvpx,接下来介绍如何在Windows环境给FFmpeg集成libopus和libvpx。

1、安装libopus

Opus是一种在互联网上处理语音交互和音频传输的编码标准,该标准的编解码器叫做libopus,它的安装步骤说明如下。
(1)到https://ftp.osuosl.org/pub/xiph/releases/opus/ 下载最新的libopus源码,比如2023年4月发布的libopus-1.4,该版本的源码下载地址是https://ftp.osuosl.org/pub/xiph/releases/opus/opus-1.4.tar.gz 。执行下面命令解压下载好的压缩包:

tar xzvf opus-1.4.tar.gz
cd opus-1.4

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

./configure --prefix=/usr/local/libopus

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

make

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

make install

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

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

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

source /etc/profile

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

env | grep PKG_CONFIG_PATH

2、安装libvpx

libvpx是视频编码标准VP8和VP9的编解码器,它的安装步骤说明如下。
(1)到https://github.com/webmproject/libvpx/tags 下载最新的libvpx源码,比如2023年9月发布的libvpx-1.13.1,该版本的源码下载地址是https://github.com/webmproject/libvpx/archive/refs/tags/v1.13.1.tar.gz 。执行下面命令解压下载好的压缩包:

tar zxvf libvpx-1.13.1.tar.gz
cd libvpx-1.13.1

(2)进入解压后的libvpx目录,运行下面命令配置libvpx。(如果不加--enable-pic,在编译FFmpeg时会报错“relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC”)

./configure --prefix=/usr/local/libvpx --enable-pic --disable-examples --disable-unit-tests

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

make

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

make install

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

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

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

source /etc/profile

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

env | grep PKG_CONFIG_PATH

3、重新编译FFmpeg

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

export PKG_CONFIG_PATH=/usr/local/libopus/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libvpx/lib/pkgconfig:$PKG_CONFIG_PATH

(2)回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用libopus和libvpx。(增加了选项--enable-libopus --enable-libvpx)

./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-libopus --enable-libvpx --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

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

make clean
make -j4

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

make install
mv /usr/local/ffmpeg/bin/*.lib /usr/local/ffmpeg/lib/
cp /usr/local/libopus/bin/libopus-0.dll /usr/local/ffmpeg/bin

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

ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到“--enable-libopus --enable-libvpx”,说明FFmpeg正确启用了新增的第三方库libopus和libvpx。​

目录
相关文章
|
2月前
|
JavaScript 前端开发 持续交付
Prettier 高级应用:集成 CI/CD 流水线与插件开发
【10月更文挑战第18天】Prettier 是一款流行的代码格式化工具,它能够自动将代码格式化成一致的风格,从而提高代码的可读性和维护性。对于希望进一步发挥 Prettier 潜力的高级用户而言,将 Prettier 集成到持续集成(CI)和持续部署(CD)流程中,确保每次提交的代码都符合团队标准,是非常重要的。此外,通过开发自定义插件来支持更多语言或扩展 Prettier 的功能也是值得探索的方向。本文将详细介绍这两方面的内容。
48 2
|
8天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
24 2
|
2月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
68 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
1月前
|
API 开发者 容器
DevEco Studio:熟练使用华为提供的集成开发环境DevEco Studio
【10月更文挑战第22天】随着HarmonyOS的普及,华为推出了官方集成开发环境DevEco Studio,以提高开发效率。本文通过开发一款天气应用的案例,详细介绍了如何使用DevEco Studio进行环境搭建、界面设计、数据绑定与交互、调试与运行等步骤,帮助开发者高效完成HarmonyOS应用开发。
171 6
|
2月前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
61 0
|
2月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
140 0
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
154 0
|
5月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
301 6
|
5月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
394 4
|
5月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
341 1

热门文章

最新文章