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

来源:Demuxed 2021
主讲: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 做得更好。

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 中 int 替换为 size_t

  • 一个 API 变化的举例:

// decoding single video packet in old API
while (pkt->size > 0) {// decode pkt into frame, comsumes <ret> bytets from pktint ret = avcodec_decode_video2(decoder, pkt, frame, &got_output);if (got_output)<process frame>// need to manually offset the bufferpkt->data += ret;pkt->size -= ret;
}
-------
// decoding single video packet in new API
avcodec_send_packet(decoder, pkt);
ret = 0;
while (ret >= 0) {ret = avcodec_receive_frame(decoder, frame);if (ret < 0)break;<process frame>
}

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 工程贡献,很多时候维护与更新是不容易的,所以对这些开源项目的赞助非常有用!

附上演讲视频:

点击“阅读原文”了解音视频技术大会更多信息!

FFmpeg 和自由软件社区的更新相关推荐

  1. 李晓江:“双碳”目标下的社区绿色更新

    上篇内容: 李晓江:"双碳"目标下的城市绿色发展 "光靠绿色技术.绿色材料.绿色装备是实现不了零碳的,必须要有绿色生活方式的推广和广大群众.老百姓的接受." 李 ...

  2. ffmpeg最新源代码(定期更新)

    为了方便那些不能连接到ffmpeg的SVN仓库更新源代码的用户,ffmpeg工程组特开辟一个专区,定期更新ffmpeg的源代码,并将其快照上传,有需要的朋友可以长期关注本帖. ffmpeg的编译指令通 ...

  3. Delphi 和 C++Builder 免费社区版更新至 10.4.2 版现已发布!

    Delphi 和 C++Builder 的免费且功能齐全的社区版旨在帮助您开始编程.这些强大的 IDE 提供了快速探索强大的应用程序开发所需的所有功能. 社区版发布后,社区中的学生和爱好者可以免费使用 ...

  4. ULTRA社区月度更新报告#3

    最近的社区反馈非常积极,我们要感谢你们所有人对我们的支持.到目前为止,我们最新的视频已经获得了超过3000次的点击量,并在所有社交媒体平台上得到了非常积极的转载. 这种热情清楚地表明,这种交流方式对于 ...

  5. 树袋熊无线网络打印服务器,2大1小完美澳洲自驾之旅(第九天:树袋熊之旅)—2013完整版(社区系统故障更新中)...

    考拉之旅 10月8日 关键词:抱考拉.喂袋鼠.鸟瞰布里斯班 在澳洲,考拉的地位犹如大熊猫在中国的地位, 法律禁止抱考拉,而位于布里斯班西南郊的龙柏考拉保护区, 不仅拥有最多数量的考拉(130多只), ...

  6. FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速

    本文来自FFmpeg Maintainer赵军在LiveVideoStackCon 2018热身分享,并由LiveVideoStack整理而成.在分享中,赵军介绍了FFmpeg的历史.关键组件,并介绍 ...

  7. FFmpeg 硬件加速方案概览 (下)

    被称为"多媒体技术领域的瑞士军刀",FFmpeg拥有广泛的应用基础.不过,当(实时)处理海量视频时,需要借助各种方法提升效率.比如,短视频平台Revvel将视频转码服务迁移到AWS ...

  8. 自由软件之父回归 FSF,遭 1933 人、21 家组织联名抵制!

    作者 | 苏宓 出品 | CSDN(ID:CSDNnews) "I'm Back!" 近日,理查德·斯托曼(Richard M. Stallman)公开表示,想要回到 35 年前自 ...

  9. FFmpeg 快速上手:命令行详解、工具、教程、电子书

    FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...

最新文章

  1. 【实用】CTS请求号传输报错处理
  2. python中常见的运行时错误_17个常见的Python运行时错误
  3. 【深度学习】一分钟速学 | NMS, IOU 与 SoftMax
  4. 生产服务器环境最小化安装后Centos 6.5优化配置备忘
  5. [转]Laravel与bootstrap-editable实现table的行内编辑
  6. 网页制作小技巧:dl dt dd标签用法
  7. Ansible安装MySQL5.7.24
  8. 计算机程序的思维逻辑 (47) - 堆和PriorityQueue的应用
  9. java缓存内存泄漏_java – getMethod是缓存并导致内存泄漏
  10. 针对关键字是字符串的一个比较好的散列函数
  11. 将远程数据库中的某表数据复制到本数据库(ORACLE)
  12. java并发编程(11)-- 线程池 拒绝策略
  13. 全面认识scratch
  14. React 16 源码解析笔记 02 - JSX 转换为 ReactElement 的过程
  15. Linux 内核 notifier机制
  16. Java支持latex,基于Java和LaTeX的文档自动生成技术研究
  17. 商业模式新生代_商业模式新生代——商业模式设计
  18. 人人都会点数据分析 | 了解数据
  19. 紫光扫描仪ocr_清华紫光OCR下载
  20. 京东手机销售数据分析,华为和三星的距离还有多远?

热门文章

  1. [译文] 初学者应该了解的数据结构: Tree
  2. 【翻译】Nginx的反向代理
  3. oracle 11g goldengate与oracle 11g数据同步
  4. mysql 在大型应用中的架构演变
  5. tengine安装问题
  6. 一段人人都应该知道的从Vue到React的过渡史
  7. (原)ubuntu16中编译boost1.61.0库
  8. 嵌入式Linux裸机开发(六)——S5PV210时钟系统
  9. ubuntu安装 zookeeper3.3.6 由于jdk问题启动失败
  10. Reporting Service 2012 体系结构