FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程桌面如何配置?使用快解析远程访问

远程桌面如何设置? 远程桌面作为windows系统内置的一个组件,多年来深受用户喜爱。使用此功能,我们能够轻而易举的控制我们想要控制的电脑。下面我就简单的介绍一下远程桌面的设置方法。 在讲具体设置方法之前,首先应该给大家普及…

dfs记忆化搜索,动态规划

动态规划概念: 给定一个问题,将其拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题的答案反推,得出原问题解。 821 运行时间长的原因: 重复大量计算…

pytorch-11 神经网络的学习

一、梯度下降中的两个关键问题 1 找出梯度向量的方向和大小 2 让坐标点移动起来(进行一次迭代) 二、找出距离和方向:反向传播 1 反向传播的定义与价值 我们是从左向右,从输出向输入,逐渐往前求解导数的表达式,并且我们所使用的节点上的张量,也是从后向前逐渐用到,…

Oracle通过触发器实现自增长字段

在Oracle数据库中,没有像SQL Server中的IDENTITY或MySQL中的AUTO_INCREMENT这样的直接方式来为表中的字段实现自增长功能。但是,你可以使用序列(Sequence)和触发器(Trigger)的组合来实现类似的功能。 以下是…

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略 导读:2024年5月13日,OpenAI重磅发布新旗舰模型GPT-4o,这是一个全新的旗舰模型,可以实时跨越音频、视觉和…

Unity Render入门

概述 在unity中渲染相关的组件是和Render关联的,比如我们常见的3D模型中的MeshRender,UI中的RenderCanvas等都是和Render相关联的,相信在unity的学习过程中,一定看到过非常多和Render相关的内容,那让我们学习一下这部…

JavaEE之线程 (6)—— 等待方法wait 和唤醒方法notify、notifyAll

线程间等待与唤醒机制 由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知。但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序。比如 球场上的每个运动员都是独立的“执行流” ,可以认为是一个 ”线程“。而完成一个具体…

【设计模式】单例模式-学习记录

什么是单例 单例模式是一种创建型设计模式,核心思想为一个类只有一个实例,并提供一个全局访问点来访问这个实例。 只一个实例就是在整个应用程序中,只存在该类的一个实例对象,而不是创建多个相同类型的对象。 全局访问点的意思…

python批量生成防伪识别二维码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 二维码(QR Code)是一种矩阵条码技术,它使用黑白矩形图案来表示二进制数据,这些矩形图案可以被设备扫描并解读。二维码可以被用来存储

每日一题——PAT(乙级)1002 写出这个数(举一反三、思想解读)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三题目链接 我的写法: nums_sounds{0:ling,1:yi,2:er,3:san,4:si,5:wu,6:liu,7:qi,8:ba,9:jiu, }sum0inputsinput() input_nums[] for i i…

人工智能-深度学习-PyTorch数据读取实战【含详细源代码+数据集+图示分析】

(以RMB人民币二分类为例) 介绍 在深度学习任务中,数据读取是至关重要的一环。它影响着模型的训练速度和训练效果。本文将以PyTorch框架为例,介绍如何读取RMB人民币二分类数据集,并进行详细的代码解析和图示分析。 原理详解 PyTorch提供了多种数据读取方法,包括: 手动…

绝地求生:29.2商城更新内容预览:挣脱尘网通行证,经典皮肤返场,空投活动

就在今天历经9小时维护,29.2版本终于上线,柠檬茶带大家一起看看,这次游戏里都更新了哪些内容吧。 挣脱尘网通行证 豪华版:$14.99 普通版:$4.99 豪华版比普通版多10级升级券和2套生存者宝箱 分支一 分支二 分支三 额外…

现代加密技术(对称和非对称加密)

1.分类 现代加密技术:对称和非对称加密,对称加密即共享密钥,非对称加密是公钥加密算法。 2.基础总结 AES是什么算法? 分组加密算法,对称加密算法AES的分组长度是?固定128位AES密钥长度是多少?支…

树莓派3B+入门(无外设)

昨日刚到一块树莓派3B,甚是喜爱,然半宿未眠 1、下载 在官网先下载烧录文件https://www.raspberrypi.com/software/ 下载完毕打开,选择,根据自己板子型号定 操作系统用最新的就行,64位不太稳定 储存卡,需…

C++ | Leetcode C++题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution { public:int numDecodings(string s) {int n s.size();// a f[i-2], b f[i-1], c f[i]int a 0, b 1, c;for (int i 1; i < n; i) {c 0;if (s[i - 1] ! 0) {c b;}if (i > 1 && s[i - 2] ! 0 &&a…

免费一个月的容器

目录 1.登录注册界面进行注册 2.创建容器使用 3.感觉不错的可以点个赞。 1.登录注册界面进行注册 注

24HN逆向部分wp

24H&N逆向部分wp 菜鸡新手师傅wp&#xff0c;Re 5/9&#xff0c;记录一下qaq&#xff08;好久没写博客了&#xff0c;水一篇hh&#xff09; 最喜欢的逆向题 64位&#xff0c;进主函数之后直接看&#xff0c;要求输入第5位为i&#xff0c;然后后面依次相等&#xff0c;长…

DevOps + 架构

一、DevOps 1定义 开发&#xff0c;测试&#xff0c;运维&#xff0c;甚至运营。出一个东西&#xff0c;就能马上走完一个流程&#xff0c;看效果 软件交付的速度和质量很重要 二、架构 1、解决系统复杂度 首先找到系统复杂度在哪里。 经典案例&#xff1a; 假设我们需要设…

Vue3实战笔记(22)—路由Vue-Router 实战指南(路由传参)

文章目录 前言一、路由router-link二、路由传参1.query方式2.params方式3.props传参 总结 前言 vue-router 是 Vue.js 官方路由管理器。它和 Vue.js 核心深度集成&#xff0c;让用 Vue.js 构建单页应用变得易如反掌。 前面提到过简单的使用路由&#xff0c;直到上文使用404界面…

僵尸网络的威胁值得关注

僵尸网络&#xff08;botnet&#xff09;是指一组受到恶意软件感染并遭到恶意用户控制的计算机。术语“僵尸网络”由“机器人&#xff08;bot&#xff09;”和“网络&#xff08;network&#xff09;”两个词组合而成&#xff0c;每台受感染设备被称为“机器人”。僵尸网络可用…