FFmpeg 6.1 发布,7.0时代即将来临

d83d4cf48e2a720af08a84cc73d0e268.jpeg

11月10日,FFmpeg 6.1正式发布。

FFmpeg 发布版本的时候,按照惯例,会选择一些物理学家名字作为代号,这一新版本代号为“Heaviside”。主要为纪念伟大的英国数学家和物理学家奥利弗·黑维塞(Oliver Heaviside)。

奥利弗·黑维塞(Oliver Heaviside)自学成才,没有系统经历过高等教育,但在物理、数学、工程领域成果非凡,其名言一直为人所津津乐道。

“数学分2种,严格的和物理直观化的。前者的范围窄;后者粗犷而广泛。拘泥于公式的严格证明只会令绝大多数的数学物理探究止步不前。难道我要在完全理解消化反应的所有机理以前,拒绝进食吗?”

Mathematics is of two kinds, Rigorous and Physical. The former is Narrow: the latter Bold and Broad. To have to stop to formulate rigorous demonstrations would put a stop to most physico-mathematical inquiries. Am I to refuse to eat because I do not fully understand the mechanism of digestion?

大佬的详细生平见奥利弗·黑维塞

FFmpeg此次发布重要信息包含以下几点:

1. 支持增强版本的RTMP/FLV,主要支持了HEVC、VP9、AV1等编解码格式。由于Adobe已经停止RTMP维护更新,这导致许多公司都在通过私有的方式支持新的视频编码格式。FFmpeg这次官方支持,长期看有可能统一混乱的私有方案,但在短期内也会增加混乱与工作量,因为企业不得不同时维护私有和开放多套标准。诚如著名的网络漫画网站https://xkcd.com/927/而言,我们又多了一个标准。

ab4976e68bdb9db8d163268fa8792f2b.png

2.对新一代编码标准VVC 和 MPEG-5 EVC (Essential Video Coding) 的parser, muxer ,demuxer以及bsf的支持。FFmpeg社区一直在积极开发原生的VVC的decoder,目前看,容器格式和bit stream相关的支持已经初步完成,让我们等待它原生的VVC 解码器被合并;另一方面,MPEG-5 EVC相关的支持工作也在积极的进行,只是其编解码器以第三方库的方式支持(https://github.com/mpeg5)。

3.FFmpeg重新实现了自己的FFT,用于其内部编解码器和滤波器的FFT、MDCT、DCT和DST实现已经完全被更快的libavutil/tx所取代;这个改动一方面带来速度上面的收益,另外一方面,也使得库的大小大为减小。

4.硬件加速继续迭代。一方面,FFmpeg已经支持了基于Vulkan的解码(当然,如同大多数硬件加速一样,它要在一定的限制条件下才能使用)。另外,也进一步支持了基于VAAP的AV1编码。说到VAAPI,最让人吃惊的莫过于,FFmpeg通过libva-win32项目,可以在WIndows上使用FFmpeg VAAPI的相关功能,这要感谢微软的工程师们在WIndows上的WSL项目上的努力。

具体改进亮点如下:

  • libaribcaption译码器

  • Playdate 视频 Decoder 和 Demuxer

  • 在Windows上扩展对libva-win32的VAAPI支持

  • 命令行新增选项:-readrate_initial_burst

  • arls 音频滤镜

  • setts和asetpts过滤器中的命令支持

  • Vulkan解码hwaccel,支持H264、HEVC和AV1

  • color_vulkan过滤器

  • bwdif_vulkan过滤器

  • nlmeans_vulkan过滤器

  • RivaTuner视频解码器

  • xfade_vulkan过滤器

  • vMix视频解码器

  • 基本视频编码解析器,混音器和解音器

  • 基本视频编码帧合并bsf

  • bwdif_cuda过滤器

  • 微软RLE视频编码器

  • 原始AC-4混频器和解混频器

  • 原始的VVC比特流解析器,复用器和解复用器

  • 位流过滤器用于编辑VVC流中的元数据

  • 比特流过滤器转换VVC从MP4到Annex B

  • videotoolbox的Scale_vt过滤器

  • videotoolbox的transpse_vt过滤器

  • 支持P_SKIP提示以加速libx264编码

  • 支持HEVC、VP9、AV1编解码器,增强flv格式

  • Apsnr和asisdr音频滤波器

  • OSQ解码器和编码器

  • 在增强的RTMP协议中支持HEVC、VP9、AV1编解码器

  • CRI USM解混器

  • ffmpeg命令行'-top'选项已弃用,取而代之的是setfield过滤器

  • AV1编码器

  • ffprobe XML输出模式更改为考虑同一父元素中的多个变量字段元素

  • Ffprobe -output_format选项作为-of的别名添加

除去这些特性,FFmpeg内部也有一些优化,包含了:

  • 在视频解码器中大幅减少内存分配,从而降低内存等开销

  • 对 DSP 代码的许多部分进行了 RISC-V 优化,针对常用解码器已经被合并

  • 提高每个数据包的时间戳和帧持续时间的正确性,从而提升变帧率视频的支持

下一个主要版本将是7.0版本,按照计划,将在2024年2月份发布。FFmpeg最近这些年,虽然也经历了一些波折,但发展并未停滞,相反越来越迅速,而我们也即将迎来FFmpeg 7.0的大版本。

Reference:

https://ffmpeg.org/index.html%23pr6.1

https://github.com/veovera/enhanced-rtmp/blob/main/enhanced-rtmp.pdf

https://devblogs.microsoft.com/directx/video-acceleration-api-va-api-now-available-on-windows/

* 感谢赵军老师对本篇文章的技术审校。

10天倒计时!深圳站大会亮点前瞻!

0471dcf5f4e3b070476915438674b6db.jpeg

点击阅读原文

跳转LiveVideoStackCon 2023 深圳站 官网,了解更多信息

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

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

相关文章

YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头

一、本文介绍 本篇文章的内容是在大家得到一个改进版本的C2f一个新的注意力机制、或者一个新的卷积模块、或者是检测头的时候如何替换我们YOLOv8模型中的原有的模块,从而用你的模块去进行训练模型或者检测。因为最近开了一个专栏里面涉及到挺多改进的地方&#xff…

Mac 安装 protobuf 和Android Studio 使用

1. 安装,执行命令 brew install protoc 2. Mac 错误提示:zsh: command not found: brew解决方法 解决方法:mac 安装homebrew, 用以下命令安装,序列号选择中科大(1)或 阿里云 /bin/zsh -c "$(curl…

实用篇-ES-RestClient查询文档

一、快速入门 上面的查询文档都是依赖kibana,在浏览器页面使用DSL语句去查询es,如何用java去查询es里面的文档(数据)呢 我们通过match_all查询来演示基本的API,注意下面演示的是 match_all查询,也叫基础查询 首先保证你已经做好了…

保姆级 | Nginx编译安装

0x00 前言 Nginx 是一个 HTTP 和反向代理服务器, 邮件代理服务器, 和通用 TCP/UDP 代理服务器, 最初由伊戈尔西索耶夫(Igor Sysoev)撰写。采用编译安装可以根据自身需要自定义配置,让服务器有更高的安全性和…

OpenAI GPT-4 Turbo发布:开创AI新时代

🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. GPT-4 Turbo的突破1.1上下文长度和控制手段的加强:1.2多模态支持&#xff1a…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论, 然后通过举例论证,接着再扩展,彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

Windows下安装RabbitMQ

1.安装Erlang 因为RabbitMQ是用Erlang语言编写的,所以在安装RabbitMQ之前需要先安装Erlang。 如果还未安装Erlang,官方下载安装包,点击Download Windows installer下载Erlang Downloads - Erlang/OTP 下载Erlang/OTP后,双击otp的…

系统韧性研究(5)| 常用的系统韧性技术

如果不利事件或条件导致系统无法正常运行,则它们可能会对有价值的资产造成各种形式的损害。正如我在本系列的前几篇文章中概述的那样,系统韧性很重要,因为没有人想要一个无法克服“不可避免的逆境”的脆弱系统。 在本系列的第一篇文章中&…

Express.js 与 Nest.js对比

Express.js 与 Nest.js对比 自从 Node.js 发布以来,Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多,每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一,在本文中&…

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点: 扩展: 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对可达性分析算法STW时间长、…

阿里AoneFlow分支管理

分支模式 1.TrunkBased模式 工作方式 TrunkBased 模式是持续集成思想所崇尚的工作方式,它由单个主干分支和许多发布分支组成,每个发布分支在特定版本的提交点上从主干创建出来,用来进行上线部署和 Hotfix(补丁)。 …

workman使用手册1.0

workman官网地址:高性能PHP应用容器 workerman 1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用 定位到项目根目录:例:cd /mnt/workman 启动代码:php outin.php start -d 停…

Python小白之PyCharm仍然显示“No module named ‘xlwings‘”

Python小白之“没有名称为xlwings‘的模块”-CSDN博客文章浏览阅读8次。cmd 打开命令行,输入python出现>>>的提示格,输入import xlwings 回车,正常报错:No module named xlwings。输入python 回车后,再输入im…

mongodb使用简单文档

1、mongodb安装与卸载 1.1、安装 python -m pip install pymongo 或 pip install pymongo如果要安装指定版本: python -m pip install pymongo3.5.1对已有的版本进行升级: python -m pip install --upgrade pymongo1.2、卸载 pip uninstall pymongo…

环境配置 | Git的安装及配置[图文详情]

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从小到大的项目版本管理。下面介绍了基础概念及详细的用图文形式介绍一下git安装过程. 目录 1.Git基础概念 2.Git的下载及安装 3.常见的git命令 Git高级技巧 Git与团队协作 1.Git基础概念 仓库&#…

我认为除了HelloWorld之外,Python的三大数据转换实例可以作为开始学习Python的入门语言。

Python的三大数据转换实例 一、反转三位数 class Solution:def funtcion(self,number):hint(number/100)tint(number%100/10)zint(number%10)return 100*z10*th if __name____main__:solution Solution()num123new_num solution.funtcion(num)print("输入:{}".fo…

制作Go程序的Docker容器

今天突然遇到需要将 Go 程序制作成 Docker 的需求,所以进行了一些研究。方法很简单,但是官方文档和教程有些需要注意的地方,所以写本文进行记录。 源程序 首先介绍一下示例程序,示例程序是一个 HTTP 服务器,会显示si…

基于DOTween插件实现金币飞行到指定位置功能

文章目录 前言一、DOTween是什么?二、使用步骤1.导入DOTween插件在Unity官方插件商店找到DOTween插件导入DOTween插件启用DOTween插件 2.代码逻辑金币飞行代码控制飞行效果代码 3.物体配置1.物体上装配CoinEffect脚本2.在金币预制体上装配FlyControl脚本 三、效果展…

基于SpringBoot的SSMP整合案例(消息一致性处理与表现层开发)

消息一致性处理 在后端执行完相应的操作后,我们需要将执行操作后的结果与数据返回前端,前端 调用我们传回去的数据,前端是如何知道我们传回去的数据名称的? 答:前后端遵循了同一个"协议"。这个协议就是定义…