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

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

视频的封装格式除了古老的MP4和ASF之外,还有较新的WebM格式,该格式的音频编码主要采用Opus,视频编码采用VP8或者VP9。其中Opus的编解码库为libopus,VP8和VP9的编解码库为libvpx。因此要先安装编译这两个库,再让FFmpeg开启opus和vpx支持,在Linux环境的操作过程包含三个步骤:安装libopus、安装libvpx、重新编译FFmpeg,分别说明如下。

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

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

复制代码
make

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

复制代码
make install

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 --enable-pic --disable-examples --disable-unit-tests

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

复制代码
make

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

复制代码
make install

3、重新编译FFmpeg

由于FFmpeg默认未启用opus和vpx,因此需要重新配置FFmpeg,标明启用opus和vpx,然后重新编译安装FFmpeg。FFmpeg的Linux环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的"1.2.3 自行编译与安装FFmpeg",详细的启用步骤说明如下。

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

复制代码
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-libfreetype --enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libopus --enable-libvpx --enable-iconv --enable-gpl --enable-nonfree

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

复制代码
make clean
make -j4

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

复制代码
make install

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

复制代码
ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到"--enable-libopus --enable-libvpx",说明FFmpeg正确启用了libopus和libvpx。​

相关推荐
阿洛学长14 小时前
MoneyPrinterTurbo 深度解析与部署实战:AI 一键短视频生成,从源码到上线全攻略
人工智能·音视频
MR.欻19 小时前
ZLMediaKit 源码分析(四):RTP/RTCP 协议栈实现分析
c++·人工智能·vscode·ffmpeg·音视频
运维栈记21 小时前
Remotion + Claude Code:用自然语言创作视频的革命性突破
人工智能·ai·音视频
晓py21 小时前
音视频基础概念入门_FFmpeg学习笔记
学习·ffmpeg·音视频
ACP广源盛1392462567321 小时前
GSV2221@ACP# 高带宽低功耗显示转换芯片,赋能 TRAE SOLO 设备高清扩展升级
人工智能·嵌入式硬件·电脑·音视频
丷丩21 小时前
MapLibre GL JS第30课:添加视频
javascript·音视频·gis·mapbox·maplibre gl js
JasonSJX1 天前
如何更好地保护视频内容免受盗版侵害
音视频·drm·视频加密·数字版权保护
“码”力全开1 天前
突破异构算力与协议围墙:基于 Docker 与边缘计算的 GB28181/RTSP 视频智能管理平台架构实践(附源码交付)
docker·音视频·边缘计算
daqinzl1 天前
Mpegts.js+FFmpeg+WebSocket+Node实时视频流实现方案
websocket·ffmpeg·node·mpegts.js
“码”力全开1 天前
基于 Docker 容器化与异构计算的工业级视频中台架构:GB28181/RTSP 双协议栈统一接入与源码交付深度解析
docker·架构·音视频