火山引擎开源通用多媒体处理框架 BMF

文章来源|BMF 开源社区

GitHub|github.com/BabitMF/bmf

开源背景

随着直播短视频、5G 的快速发展,越来越多的数据以视频的形式被记录和传播。这使得视频处理技术的研究和应用变得尤为重要,它们是用于实现各种视频应用程序的通用工具、SDK 和解决方案。

视频时代,多媒体开发面临着多元化的挑战,包括,

  • 复杂场景:处理链路复杂、算法与工程相互依赖、业务场景多样。
  • 扩展与协同:对于一些算法开发者,许多时候会采用Python等高级语言,而一些多媒体处理的方案仅提供C/C++的接口。另外还有一些场合,为了更好的达到能力复用,往往发现已有成熟的能力所使用的开发语言和当前正在开发的工程不是同一种,如何快速有效的把能力复用并且融合起来,对工程化提出了很大的挑战。
  • 标准与兼容:多媒体开发用户经常面对不同的处理需求,对于一些经典常用的转码、filter能力使用频率很高,为了达到业界标准,在开发满足自身需求的同时还需要投入大量精力实现符合业界标准的转码、filter处理细节; 还有一些复合的开发情况,需要在不同的主流数据之间互操作,开发人员往往需要投入大量精力学习与各种标准、SDK对接。
  • 异构计算:对于海量的视频处理,单纯依靠多核CPU的计算有时无法满足性能和成本的要求,这就需要结合GPU、DSP等协处理器进行硬件加速。如何便捷高效的对接异构能力,包括在用户处理链路中简洁易用的数据传递与转换、高性能的异步调度是新时代的挑战。

为了解决上文提到的若干挑战,火山引擎研发了BMF(Babit Multimedia Framework )通用多媒体处理框架,能够提供简洁易用的跨语言接口、灵活的调度和扩展性,以模块化的方式动态扩展、管理和复用视频处理的原子能力,以Graph/Pipeline 的方式构建高性能的多媒体处理链路或者以单独处理能力的直接调用实现工程集成,帮助多媒体用户便捷、高效的将项目落地于生产环境。BMF 团队以开源的形式,希望通过帮助用户解决行业痛点,可以带来更多的用户和社区关注与反馈,不断的提升公司的技术影响力。

BMF 是什么

BMF(Babit Multimedia Framework,八比特多媒体处理框架)是火山引擎 自研的一套通用多媒体处理框架,能够提供简洁易用的跨语言接口、灵活的调度和扩展性,以模块化的方式动态扩展、管理和复用视频处理的原子能力,以 Graph 的方式构建高性能的多媒体处理链路,帮助多媒体用户便捷、高效的将项目落地于生产环境。BMF 整体生态体架构如图所示。

BMF 框架的特点

  • 简洁的多语言接口 BMF 提供了多语言的接口,方便用户根据项目需要在不同的语言中集成开发,最大限度的兼容和复用整个框架的能力。
  • 松耦合的多语言模块 模块提供视频处理的原子能力,用户可以任意选择 Python、C++、Go 专注于开发模块;模块与框架之间、模块与模块之间松耦合,从而把算法与工程解耦,把不同语言开发的处理模块和上层应用所使用的开发语言解耦,极大的增强了扩展能力和多元化的协同能力。
  • 功能强大的调度引擎 BMF 提供可配置的并行调度器、多种使用模式和动态调整 Graph 的高级特性,实现高性能的调度机制负责 DAG/Graph/Pipeline 的运转,通过各种解决方案帮助用户以较小的开发成本实现复杂场景下的功能、性能需求。
  • 完全兼容 FFmpeg 功能和标准 BMF 完全兼容 FFmpeg 的处理能力和指标,比如解封装、解码、filter、编码、封装能力,对这些处理能力的配置以及能够得到和 FFmpeg 的 pts、duration、bitrate、fps 等指标一致的结果,很好的满足了需要把 FFmpeg 能力快速集成到项目中的需求。
  • 多种框架及异构设备间数据转换能力 支持多种主流数据格式之间的零拷贝互转,极大的兼容不同模块之间的数据衔接。比如既需要使用 ffmpeg 的编解码和 filter 能力,又要使用 OpenCV 的变换处理,还需要借助 Pytorch 做智能分析的较复杂场合;同时支持异构跨设备的数据传递与 pixel format 转换能力、异步调度的能力,从而帮助用户快速解决生产环境的加速优化问题。

应用场景

在公司内部落地于亿级别/天的 视频转码、增强、智能处理业务、抽帧审核业务、直播的视频增强 人像抠图、移动端上的算法落地等,帮助公司降低开发、计算、带宽成本,提高了工程与算法的协同和开发效率。

如何使用

开源地址:

https://github.com/BabitMF/bmf

后续计划

BMF 现已开源,目前该项目仍在积极迭代中,后续会在异构生态建设、更多原子能力建设 移动端支持等方面发力,完善多媒体开发生态,加强业界合作,也欢迎大家试用和参与社区建设,促进技术标准化。

感谢与交流

欢迎大家通过 GitHub 进行后续交流与反馈,也欢迎大家访问 BMF 网站

老乡鸡“开源”了 deepin-IDE 终于实现了自举! 好家伙,腾讯真把 Switch 变成了「思维驰学习机」 腾讯云4月8日故障复盘及情况说明 RustDesk 远程桌面启动重构 Web 客户端 微信基于 SQLite 的开源终端数据库 WCDB 迎来重大升级 TIOBE 4 月榜单:PHP 跌至历史最低点 FFmpeg 之父 Fabrice Bellard 发布音频压缩工具 TSAC 谷歌发布代码大模型 CodeGemma 不要命啦?做的这么好还开源 - 开源图片 & 海报编辑器工具
{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/6210722/blog/10105899