FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid

ffmpeg,linux,libxvid · 浏览次数 : 0

小编点评

本文介绍了如何在Linux环境下为FFmpeg集成XviD编解码库libxvid。首先,从Xvid官方网站下载源码包并解压,然后进入构建目录配置和编译libxvid。接下来,重新配置FFmpeg以启用libxvid,并重新编译和安装。最后,通过运行ffmpeg -version命令查看FFmpeg的版本信息,确认是否成功启用了XviD编解码器。 1. 下载并解压libxvid源码包: 1. 访问Xvid官方网站下载源码包。 2. 解压下载的压缩包到服务器。 3. 进入解压后的目录。 2. 配置和编译libxvid: 1. 进入解压后的build/generic目录。 2. 运行`./configure`命令配置libxvid。 3. 运行`make -j4`命令编译libxvid。 4. 运行`make install`命令安装libxvid。 3. 重新配置并编译安装FFmpeg: 1. 回到FFmpeg源码目录。 2. 执行`./configure`命令,增加--enable-libxvid选项以启用libxvid。 3. 运行`make clean`和`make -j4`命令进行编译。 4. 运行`make install`命令安装FFmpeg。 4. 验证FFmpeg是否启用libxvid: 1. 运行`ffmpeg -version`命令查看FFmpeg版本信息。 2. 查看控制台输出,确认是否显示“--enable-libxvid”。 通过以上步骤,可以在Linux环境中为FFmpeg集成Xvid编解码库libxvid。

正文

XviD是个开源的视频编解码器,它与DivX一同被纳入MPEG-4规范第二部分的视频标准,但DivX并未开源。早期的MP4视频大多采用XviD或者DivX编码,当时的视频格式被称作MPEG-4。现在常见的H.264后来才增补到MPEG-4规范的第十部分,当然如今使用XviD压缩的视频已经不多了。

在《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.1  音视频编码的发展历程”提到“MPEG-4标准的第二部分规定了视频的编解码器比如Xvid”,只是XviD格式已经逐渐被H.264标准取代,所以该书并未介绍如何给FFmpeg集成XviD。下面就介绍如何在Linux环境给FFmpeg集成XviD的编解码库libxvid。

一、安装libxvid

libxvid的源码下载页面是https://labs.xvid.com/source/,最新的1.3.7版本于2019年12月发布,该版本源码包的下载链接为https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz。
libxvid的安装步骤说明如下。
1、将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。

tar zxvf xvidcore-1.3.7.tar.gz
cd xvidcore

2、进入解压后的build/generic目录,运行下面命令配置libxvid。

cd build/generic
./configure

3、运行下面命令编译libxvid。

make -j4

4、编译完成后,运行下面命令安装libxvid。

make install

二、启用libxvid

由于FFmpeg默认未启用libxvid,因此需要重新配置FFmpeg,标明启用libxvid,然后重新编译安装FFmpeg。FFmpeg的Linux环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3  自行编译与安装FFmpeg”,详细的启用步骤说明如下。
1、回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用libxvid。(增加了选项--enable-libxvid)

./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-openssl --enable-libaom --enable-libsvtav1 --enable-libdav1d --enable-libuavs3d --enable-libwebp --enable-libxvid --enable-iconv --enable-gpl --enable-nonfree

2、运行下面命令编译FFmpeg。

make clean
make -j4

3、执行下面命令安装FFmpeg。

make install

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

ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到“--enable-libxvid”,说明FFmpeg正确启用了XviD的编解码器libxvid。

与FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid相似的内容:

FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid

​XviD是个开源的视频编解码器,它与DivX一同被纳入MPEG-4规范第二部分的视频标准,但DivX并未开源。早期的MP4视频大多采用XviD或者DivX编码,当时的视频格式被称作MPEG-4。现在常见的H.264后来才增补到MPEG-4规范的第十部分,当然如今使用XviD压缩的视频已经不多了。

FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器

​AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了

FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器

​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l

FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

​《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKi

FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流

​OBS是一个开源的直播录制软件,英文全称叫做Open Broadcaster Software,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、Mac OS、Linux等操作系统。 OBS的官网是https://obsproject.com/,录制软件名叫OBS

FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比

​《FFmpeg开发实战:从零基础到短视频上线》一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高。然而有的视频文件并非如此,如果按照AVCodecContext设定的宽高展示视频,会发现画面被压扁或者拉长了。比如该书第10章源码playsync.

FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器

​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l

FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址

​《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKi

FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过Visual Studio开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C++工程中集成FFm

FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作

​《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定,从TS流的任一片段开始都能独立解码,因此可以把TS当成音视频文件的封装格式。 鉴于TS包的独立解码特性,HLS协议引入了TS格式作为传输单元。HLS协议的