FFmpeg 和自由软件 区的更新

▲扫描上图二维码了解音视频技术大会更多信息

主讲:Jean-Baptiste Kempf @ Videolan

翻译:钟宏成

谈谈 FFmpeg 区的变化,以及 FFmpeg 项目中发生的事情。FFmpeg 5.0 发布、CoC 和其他一些东西。

目录

FFmpeg history

Work together

Work better

FFmpeg releases

FFmpeg 5.0 changes

Dav1d 状态

FFmpeg 在各种场景下被用于各种处理。大多数在线视频生态依赖于 FFmpeg,许多开源、非开源应用使用 FFmpeg,FFmpeg 也用于许多云上的服务,比如编码、在线转码等。许多人围绕 FFmpeg 创建解决方案,因此 FFmpeg 是整个视频工业里的一个关键部分。很奇怪的是,大多数开发者不知道 FFmpeg 被如何使用,因为许多 FFmpeg 的用户并不与他人交流。FFmpeg 作为关键部分被应用在成百上千的应用中,但其核心 区成员缺只有几十个,并且他们不知道应用场景是什么。

大多数为 FFmpeg, x264 等 区贡献的成员都是志愿劳动,没有任何 酬,大多数开源项目也是这样,这很难。

FFmpeg history

FFmpeg 区的发展有过很多不顺,过去几年的状况并不理想,我们希望能解决问题,与下游的 FFmpeg 用户一起解决这些问题:

libav 与 FFmpeg 分离几乎十年,现在基本解决了;

主要维护者 Michael Niedermayer 在几年前辞职;

邮件列表中的语气比较紧张;

很多人害怕提交 patch,因为他们不相信自己的代码能被合并,reviewer 都很严格;

下游有很多分支,它们固定在特定的版本上,工作在不同场合,并且在其上有很多 patch。这导致了许多重复工作,并且不更新的 FFmpeg 会有一些安全问题。

Work together

对于 FFmpeg 的 区架构,我们现在有:

General Assembly:由全部活跃开发者组成,负责重要决策;

Technical Committee:解决技术问题,裁决技术讨论;

Community Committee:规范人们在邮件列表与 IRC 频道上的行为,维持工作环境。

Work better

我们同样需要改变开发模式,这些都在讨论中,也许可以有固定的发布周期?或者可以维护一些长期维护版本 LTS release?我们同样在讨论提升开发工具,如何帮助持续继承。人们也在讨论迁移到 GitLab,但目前没什么结果,如果您有好的意见,欢迎参与讨论。最后,code of conduct,其他的一些工具和规则也需要更新。在你看到这个视频的同时,也许一些讨论已经有了进展,但我们还不确定。

FFmpeg releases

FFmpeg 4.4 在 FFmpeg 4.3 几乎一年后推出,主要有以下更新:

AV1 硬件解码,SVT-AV1 编码器;

AVS3 解码器, Linux VP9/HEVC 10bit;

Cineform HD, SpeedHQ, OpenEXR, TTML 编码器;

RIST 与 Gopher 支持;

许多新 filter。

FFmpeg 5.0 的发布(January 17th, 2022, FFmpeg 5.0 “Lorentz”):

包含 FFmpeg 历史中最大的 API 改变,大约有 90 个 commit 用于删除废弃的 API 与数据结构;

swscale threading;

新 filter。

FFmpeg 5.0 changes

FFmpeg 5.0 最大的变化主要是在 avcodec 的 encoding,decoding:

现在音频、视频使用同一个 API;

编码的输入、输出解耦。

新的回调函数允许编码器输出数据到用户管理的 buffer;

swscale 中的 AVFrame based API;

分离 avformat 与 avcodec,demuxer 不再嵌入整个 decoder context;

新的 bitstream filtering API,可以用于编码包头分析;

codec/format 注册 API 被去除了,现在所有格式总是注册的;

类型安全:在许多 API 中 替换为 ;

一个 API 变化的举例:

Dav1d 状态

Dav1d 的手写汇编代码已经超过 150k 行,现在支持的汇编有:

ARM32 & ARM64;

x86 32bit;

x86 64bit (SSSE3 & AVX2)。

在单线程,几乎所有能做的优化都已经实现了,但在多线程优化上还有提升空间,现在使用的自动多线程模型可以在给定线程数的情况下自动设定 Frame-threads、Slice-threads、Filter-threads。Dav1d 的 1.0 版本即将发布,接下来的工作可能是在 AVX512,PPC 上,或是使用 GPU 加速。

最后,特别需要提到的是,最近 FFmpeg 区的进展主要有 YouTube 和 Facebook 赞助,许多 dav1d 上的进展由 Netflix 赞助。许多人在他们自己的时间为 FFmpeg 工程贡献,很多时候维护与更新是不容易的,所以对这些开源项目的赞助非常有用!

附上演讲视频:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月5日
下一篇 2022年2月6日

相关推荐