强大的高效视频处理框架——BMF
BMF 概述
BMF 是一款强大的跨平台、多语言、可定制的视频处理框架,用起来特别便利和强大,并且支持 GPU 加速。我粗略的体验了一番,BMF 会成为日后工具箱中的重要一员,有了它需要转码时再也不用辛辛苦苦的到处寻找解决方式,最重要的是,它还支持特别多的高级应用,又强大又好用的一门工具。
我去了解了一下 BMF 的架构设计,叹为观止,BMF 从架构设计到实现,涵盖了多种特性致力于解决新时代视频处理所面临的诸多困难。
在我体验后,我认为 BMF 有几个方面深得我心。
简洁的多语言接口:使用非常方便,只要我安装成功,代码集成度超高,无非复杂配置,轻松就能完成所需。
文档健全,这很重要,很多应用无需重复造轮子,直接使用官方提供的案例修改即可
多语言支持,BMF 支持 python、C++、Go 语言,模块与框架之间,模块与模块之间松耦合,解耦度非常高,极大的增强了扩展能力和多元化的协同能力
成熟可靠,据不成熟统计,该框架每天处理超过 20 亿个视频,在可靠性和稳定好方法都足以信任
支持 GPU,我认为这是图像处理、视频处理非常关键的一点,可以充分发挥电脑的性能,加速视频的处理过程
与 AI 结合,这点让我很欣喜,AI 的强大有目共睹,与 AI 结合,自己实现的难度和复杂度不用我多说,借助 BMF,已经可以实现多款 AI 处理方式,我唯一感觉的就是还不够,如果能多几种就更完美了。
本文主要体验了后续我可能会使用的一些功能,真不错
准备工作
在使用 BMF 之前,都需要先创建一个 bmf.graph 对象,这是一切使用的基础。
视频转码
转码分为两步,解码和编码,解码使用的函数是 decode,编码使用 encode。BMF 提供的转码功能非常强大,封装的非常完善,通过简单的参数修改就能完成视频、音频的轻松转码。这点我真是太爱了。
decode 核心参数是待处理视频的路径,一般情况使用这一个参数就可以,decode 方法位于 graph 上。
encode 方法则位于 bmf 对象上,参数较复杂一些。video_stream, audio_stream 分别代表视频流和音频流,encoder_para 是编码参数,核心是输出路径。
然后我们就可以这样使用,下面举一个将 mp4 格式进行 hls 切片,同时不涉及音频和视频部分的解码和编码
然后我们可以将 decode 和 encode 一起来进行使用,只处理视频部分,对其进行压缩,同时更换编码方式,这也可以较为轻松的实现。
同样的我们也可以只修改音频部分,前后各自添加一段音频,然后再进行编码。
与 AI 结合
除了转码功能外,BMF 还具备很多便捷的功能,最让我赞叹的是与 AI 的结合。下面就官网提供的例子,来一起展望一一下 AI 与 BMF 的强大结合、
老照片上色
老照片上色、历史照片修复这些现在看来都不足为奇,毕竟 AI 做图片还是有一手,BMF 把最先进的着色算法(DeOldify 算法)集成到了 BMG 视频处理中,视频的翻新也变得简单起来。
Step1: 引入 DeOldify 着色算法,也就是 BMF-python 模块,设置 BMF 处理管道(解码-》彩色码-》编码),运行即可。
Step2:AI 视频处理是十分消耗性能的,需要庞大的算力,建议开启 GPU。
Step3: 设置 BMF 管道的执行顺序
太强了,只需要在原有的视频转码过程中,加入对 DeOldify 算法,就可以轻松实现视频的翻新。
其他应用
有了视频翻新的理念,其他的 AI 实现就比较好理解了,例如超分辨率便是在视频的转码过程中,结合 RealESRGAN 推理算法,借助通道就可以轻松实现。把握住转码的核心流程线,很多日常中比较复杂的视频处理都可以借助 BMF 来进行简化。
总结
BMF 真的是真好对了我的口味,作为一项多媒体处理框架,这是一项非常成熟和可靠的框架,它支持多语言、异构计算,GPU 和 CPU 并行处理,与 AI 进行结合,完全兼容 FFmpeg,搭建了一套完整的体系,对于多媒体处理领域是极大利好。
版权声明: 本文为 InfoQ 作者【白日梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/0e332586f79bbd7c183f9aaf2】。文章转载请联系作者。
评论