写点什么

高效视频处理框架 BMF 实践

作者:轻口味
  • 2023-12-31
    北京
  • 本文字数:1180 字

    阅读完需:约 4 分钟

高效视频处理框架BMF实践

日常工作主要开发环境是 MAC,在 MAC 下涉及音视频处理用到的主要工具:


  1. 音视频播放:VLC、FFPLAY

  2. 音视频采集:OBS

  3. 音视频编解码处理:FFMPEG、OpenCV

  4. 音频处理:Audition

  5. OCR:Mac 自带


其他 AI 相关的音视频处理,比如图像识别,语音转文本,文本转语音,基于商业 API。最近接触到字节开源的高效音视频处理框架 bmf,在 FFMPEG 等流行开源库基础上封装了其他更强大的能力。


bmf 框架是三层设计,底层提供了音视频相关的基础处理滤镜,实时流媒体(WebRtc)处理,3D 处理等,中间框架层提供了各语言基础能力封装,框架的图/管道调度、跨数据类型和跨设备数据传输后端,以及常用的跨设备格式化、色彩空间转换、张量算子等 sdk,接口层提供了多语言的 API 接口。


本文基于 docker 跑通了 bmf 框架,实践了解码和合成功能。

1、环境搭建

日常工作使用的是 Inter 芯片的 Mac 本,基于 docker 环境搭建了 bmf 环境。bmf 提供的 docker 镜像基于 ubuntu 20.04,它包含了运行 BMF CPU 和 GPU 的完整环境依赖:Cuda11.8, Pytorch 2.0, TensorRT 8.6.1, CV-CUDA 0.3。安装完 docker 后执行官方教程命令:


# 拉取官方镜像docker pull babitmf/bmf_runtime:latest
复制代码


启动 docker 环境:


docker run  -it babitmf/bmf_runtime:latest bash
复制代码


编译 bmf:


./build.sh
复制代码

2、跑通 demo

bmf 基于 graph 的方式组织各个模块,使用下面方式构建 graph:


import bmf
graph = bmf.graph()
复制代码


构建完后可以直接使用内置的模块解码视频:


video = graph.decode({     "input_path": input_video_path})
复制代码


平时如果我们要将一个音频和视频文件合成一个文件,通常使用 ffmpeg 命令:


ffmpeg -i input_video.mp4 -i input_audio.aac -c:v copy -c:a copy output.mp4
复制代码


bmf 官方提供了对应实现:


bmf.encode(     video['video'],     video['audio'],     {         "output_path": output_path,         "video_params": {             "codec": "h264",             "width": 320,             "height": 240,             "crf": 23,             "preset": "very fast"         },         "audio_params": {             "codec": "aac",             "bit_rate": 128000,             "sample_rate": 44100,             "channels": 2         }     })     .run()
复制代码


这里指定了音频参数和视频参数,比 ffmpeg 更灵活,比 ffmpeg 代码实现更便捷。


此外 bmf 还提供了视频增强、实时音视频传输等能力,对于音视频处理绝对是一个宝库,等待着我们去挖掘和尝试。

3、使用感受总结

bmf 的接口框架及接口设计都比较不错,整体体验也比较方便,但是总体上看文档建设有待提高,从能力到最佳实践缺少更详细的描述,针对不同场景和不同端(移动端 or 桌面端 or 服务端)推荐使用方式以详细描述。内部结构和原理也可以多一些介绍,让大家使用时更有数。


总体来说是一个不错的项目,大而全,如果能够对不同场景做更合理的拆分,实用性会更强。

发布于: 刚刚阅读数: 4
用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017-10-17 加入

Android、音视频、AI相关领域从业者。 欢迎加我微信wodekouwei拉您进InfoQ音视频沟通群 邮箱:qingkouwei@gmail.com

评论

发布
暂无评论
高效视频处理框架BMF实践_音视频_轻口味_InfoQ写作社区