首页 > 系统相关 >FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx

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

时间:2024-04-06 11:45:50浏览次数:26  
标签:enable FFmpeg -- libvpx 编译 Linux libopus

​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。​

标签:enable,FFmpeg,--,libvpx,编译,Linux,libopus
From: https://www.cnblogs.com/aqi00/p/18105739

相关文章

  • 在Linux中,如何检查磁盘使用情况和剩余空间?
    在Linux系统中,检查磁盘使用情况和剩余空间是系统管理和维护的常见任务。有多种命令可以帮助你获取磁盘空间的详细信息。以下是一些常用的方法:1.df命令df(DiskFree)命令用于显示文件系统的磁盘空间使用情况。它可以报告各个挂载点的总空间、已用空间、可用空间和挂载信息。基本......
  • 在Linux中,虚拟内存和交换空间作用是什么?
    在Linux系统中,虚拟内存和交换空间是用于扩展物理内存(RAM)容量的两种机制。它们允许系统在物理内存不足时继续运行程序和处理数据,从而提高了系统的可用性和稳定性。1.虚拟内存(VirtualMemory)概念:虚拟内存是一种内存管理技术,它使得系统可以访问比物理内存更多的内存空间。虚拟......
  • 在Linux中,SELinux和AppArmor安全模块作用是什么?
    在Linux中,SELinux(Security-EnhancedLinux)和AppArmor(ApplicationArmor)是两种强制访问控制(MAC)安全模块,它们用于提供额外的安全层,以限制程序和用户的权限,从而保护系统免受恶意软件和未授权访问的威胁。1.SELinux(Security-EnhancedLinux)作用:强制访问控制:SELinux通过强制执行......
  • 在Linux中,什么是系统调用?举例说明其作用是什么?
    在Linux中,系统调用(SystemCall)是用户空间程序与内核空间进行交互的一种机制。当用户程序需要执行诸如文件操作、网络通信、进程管理等不能直接由用户空间代码执行的操作时,它们会通过系统调用来请求内核代为完成这些操作。系统调用的作用主要体现在以下几个方面:抽象硬件操作:系......
  • [转帖]如何在Ubuntu Linux上使用SNAP安装Docker
    https://zhuanlan.zhihu.com/p/633483748 2人赞同了该文章在UbuntuLinux上安装Docker的最快捷的方法之一是使用SNAP命令。在这里,我们将学习如何使用它。对于那些处理容器化应用程序的人来说,Docker无需介绍。它已经被全球数百家企业和开发人员使用。然而,那些想要......
  • FFmpeg图片与视频相互转换命令
    FFmpeg图片与视频相互转换命令命令简介该命令可以实现对图片和视频之间的相互转换,即:图片转视频和视频转图片。视频转图片命令的格式ffmpeg-i[输入文件][滤镜参数(可选)][输出文件]输入文件指定你要转哪个视频文件。滤镜参数详见FFmpeg滤镜命令简介,并且可以添加编解码......
  • FFmpeg音视频裁剪和合并命令
    FFmpeg音视频裁剪和合并命令命令简介裁剪音视频和合并音视频。合并命令ffmpeg-i[输入文件1]-i[输入文件2]...[滤镜参数][输出文件]输入文件指明输入你要合并的文件,可以有多个输入文件。滤镜参数可以为合并的文件添加滤镜,详细参数查看ffmpeg滤镜命令中的参数。输......
  • FFmpeg滤镜命令
    FFmpeg滤镜命令命令简介该命令可以给视频添加水印,修改视频的大小,调整视频的色彩等等等等;对音频可以做到调整音量,去噪等等等等。命令格式ffmpeg-i[输入文件]-filter_complex["参数"][输出文件]输入文件填写你要操作的视频。如果你用到了overlay参数,记得在这里再添加上覆......
  • FFmpeg从原始数据中提取YUV或PCM数据命令
    FFmpeg从原始数据中提取YUV或PCM数据命令命令的作用这些被提取出的YUV数据和PCM数据可以用于多媒体的处理或应用,它们可以用于视频分析(如人脸识别,追踪目标,动作检测);图像处理(如颜色校正,图像处理算法);视频压缩,声音分析等等等等。命令的格式ffmpeg-i[输入的参数][输入的文件......
  • FFmpeg推拉流命令
    FFmpeg推拉流命令命令简介它可以将本地的视频/音频流推送到服务器,也可以将服务器上的音视频流拉到本地。推流命令的命令格式ffmpeg-re-i[输入文件]-c:v[视频编码器]-c:a[音频编码器]-f[输出格式][推流地址]参数解析-re表示采用实时模式,以原始速度推流;-i[输入......