火山引擎开源通用多媒体处理框架 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 转换能力、异步调度的能力,从而帮助用户快速解决生产环境的加速优化问题。

应用场景

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

如何使用

开源地址:

github.com/BabitMF/bmf

后续计划

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

感谢与交流

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

相关推荐
FIT2CLOUD飞致云42 分钟前
测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布
开源·接口测试·metersphere·团队协作·持续测试·测试管理
杨荧3 小时前
【JAVA开源】基于Vue和SpringBoot的旅游管理系统
java·vue.js·spring boot·spring cloud·开源·旅游
杨荧17 小时前
【JAVA开源】基于Vue和SpringBoot的水果购物网站
java·开发语言·vue.js·spring boot·spring cloud·开源
x-cmd20 小时前
[241005] 14 款最佳免费开源图像处理库 | PostgreSQL 17 正式发布
数据库·图像处理·sql·安全·postgresql·开源·json
customer081 天前
【开源免费】基于SpringBoot+Vue.JS洗衣店订单管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
杨荧1 天前
【JAVA开源】基于Vue和SpringBoot的周边产品销售网站
java·开发语言·vue.js·spring boot·spring cloud·开源
时光追逐者1 天前
WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!
前端·microsoft·开源·c#·.net·layui·.netcore
customer082 天前
【开源免费】基于SpringBoot+Vue.JS美容院管理系统(JAVA毕业设计)
android·java·vue.js·spring boot·spring cloud·开源
zty郑桐羽呀2 天前
[C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品
开发语言·数据结构·c++·算法·开源·zty郑桐羽呀·zty
碳苯2 天前
【rCore OS 开源操作系统】Rust 练习题题解: Structs
rust·开源·操作系统·os·内存安全