FOSDEM 2023 | 双重展示: FFmpeg 6 和 VLC.js

知名多媒体开发者兼 VideoLAN 总裁 Jean-Baptiste Kempf 回顾了 FFmpeg 5.0 版本和 5.1 版本中的改进,并对 FFmpeg 6.0 新版本中的内容进行了分享,还对 VLC 及其依赖项使用 wasm 编译到 Web 浏览器,并使用 Webcodecs 解码视频进行了演示。

来源:FOSDEM 2023
链接:https://fosdem.org/2023/schedule/event/om_vlc/
主讲人:Jean-Baptiste Kempf
内容整理:王妍

FFmpeg 5.0 “Lorentz”

FFmpeg 5.0 版本在 API 上改变很大,其中最重要的是用单个 API 进行音频和视频处理。5.0 版本还进行了很多其它改变,包括:

  • 解耦编解码器的输入和输出;
  • 编码器将数据输出到用户管理的缓冲区;
  • 每一帧以 S-W 比例为基础;
  • 新的比特流过滤 API,允许修改编码数据而不解码它(例如分析器);
  • 对 avformat 和 avcodec 两个库进行解纠缠,Demuxers 不再嵌入整个解码器上下文;
  • 帧和包总是引用计数;
  • swscale 中的切片线程伸缩;
  • 杜比视觉元数据;
  • MacOS 上的硬件加速 ProRes 和 VP9 解码;
  • libplacebo 的集成,它过去是 MPV 视频过滤框架,主要是 gpu 加速,现在是一个 FM 包,可以很容易地使用;
  • 大量的滤波器和游戏解码器。

FFmpeg 5.1 “Riemann”

FFmpeg 5.1 版本非常重要,它是 LTS(5.0 不是 LTS),尝试修复至少在几年之内的安全漏洞。5.1 版本做的主要的是音频通道布局 API 的改变,这本应在 5.0 版本实现,由于太过耗时放到了 5.1 版本。5.1 版本有了新的更灵活和可扩展的通道布局 API:

  • 一个布局中可以有任意数量的通道(以前只有64个);
  • 支持 Ambisonics 和 NGA;
  • 概念上是通道列表;
  • 有灵活的内部表示,包括未指明的序列,基于掩码的序列(与旧 API 相同,兼容 waveformatex),序列固定的立体声响复制,显式通道列表(允许双单声道等边缘情况)。5.1 版本还进行了如下优化:
  • 扩大模糊覆盖范围;
  • 用 vdpau 加速 AV1 解码;
  • 引入基于 ARM64 的 HEVC SIMD 优化;
  • 引入JPEG-XL 解码;
  • 增强对 SVT-AV1 编码选项的支持;
  • 进行大量修复,增加新的滤波器。

FFmpeg 6.0

FFmpeg 6.0 版本的开发者很多,目前有 191 名贡献者。在 6.0 版本中,会有大量的 API 更改(和中断),将删除更多在过去几年被弃用的东西。其中最主要也最困难的变化是多线程 FFmpeg,在 FM 包中有很多工作要做,这项工作可能持续整个 2023 年。

FFmpeg 中要做的一项重要优化是可以在英特尔、英伟达和 AMD 显卡上实现 AV1 硬件解码,它的速度很快,质量也不错。FFmpeg 6.0 在 FFT 代码中做了很多优化,所以所有音频编解码器和音频过滤器都需要 USC FFT,有时比都在使用的外部 FFT 库更好。6.0 版本还将推出 AndroidMedia 编解码器,直接使用 NDK 而不是 JavaCup,它直接集成到 FM 包中。开发者在FFmpeg 内部实现了英特尔 10/12 4:2:2和4:4:4,这是 6.0 能有新的像素格式的原因之一。

除此之外,6.0 版本还将推出很多新的编解码器和滤波器,如解码器 Bonk, APAC, APAC, Mi-SC4, 100i, VQC, FTR PHM, WBMP , XMD ADPCM, WADY DPCM, CBD2 DPCM,滤波器 adrc, afdelaysr, showcwt, a3dscope Ssim360, corr, backgroundkey。

FFmpeg 发布

FFmpeg 的发布计划是每年一个主要的 ABI/API breakage,大约在 12 月份和 1 月份。根据安全性和需求,在一年中发布一到两次。每两年将有一个版本是 LTS,将继续做两三年,下一个计划的 LTS 版本是 2024 年的 FFmpeg 7.1。

图片

dav1d

dav1d 1.0 在去年发布,包含了 200,000 行的手写汇编。手写汇编比使用任何版本的编译器都要快,因此非常有必要。Dav1d 比 gav1 快 10-20% (arm 上)或~50% (x86 上)。Dav1d 的多线程伸缩性比 gav1 的好得多,在内容为 1080p,中等线程数(arm 上 4 个,x86 上 8 个)的情况下,它的多线程速度是gav1的2倍(arm上)或5倍(x86上)。

图片

dav1d 可以用于VLC, FFmpeg,Firefox, Chrome, Netflix, Facebook, Apple, Microsoft 等等。dav1d 1.1.0 版本将很快发布,该版本做了很多修复,将有很多新的汇编。

VLC.js

VLC 实际上是通过网络编解码器解码在硬件上,把输出帧用 wasm 编译到 web 浏览器并显示出来,Jean-Baptiste Kempf 对此进行了演示。VLC 是一种模块方法,有非常小的核心和可能 400,500,600 个模块。只播放核心,核心就会知道该去哪里下载。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论