多媒体处理框架体验BMF产品体验|社区征文 您所在的位置:网站首页 bmf安装视频 多媒体处理框架体验BMF产品体验|社区征文

多媒体处理框架体验BMF产品体验|社区征文

2024-04-20 16:51| 来源: 网络整理| 查看: 265

开源赛道 1:高效视频处理

BMF 是一套通用的多媒体处理框架,通过提供简洁易用的跨语言接口、灵活的调度和扩展性,以模块化的方式动态扩展、管理和复用视频处理的原子能力。它以 graph/pipeline 的方式构建高性能的多媒体处理链路,同时还可以直接调用单个处理能力实现工程集成,帮助多媒体用户便捷、高效地将项目落地于生产环境。目前主要应用于视频转码、视频抽帧、视频增强、视频分析、视频插帧、视频编辑、视频会议、VR 等领域。

BMF 项目地址:https://github.com/BabitMF/bmf

了解/体验火山引擎多媒体处理框架 BMF,投稿内容可以是:

在调用部署安装过程中的具体问题和解决方法 运行 BMF 的体验与反馈,包括优势与不足 使用 BMF 搭建应用的过程 前文

笔者略懂python,从产品的定义去理解使用BMF ,BMF是一个针对主要针对非结构化文件【即视频、音频】进行编辑操作的多媒体处理框架,BMF的编辑操作分为 Transcode、 Edit、 Meeting/Broadcaster、CPU+GPU、 acceleration、 AI一共五部分。

面向对象主要是开发者或者使用者,怎么提供通俗易懂的更友好的五部份相关的API? 更友好的五部分相关的DEMO示例? 参数展开相关的形象立体的解释。 环境配置 I系统CPU内存Ubuntu 20.04.6 LTSi7-4710HQ *8核12G 安装步骤 安装基础包 ​ apt update apt install -y make \    git pkg-config \   libssl-dev \   cmake binutils-dev \   libgoogle-glog-dev \    gcc g++ yasm nasm ​ ​ apt install -y python3.9 \   python3-dev \   python3-pip ​ ​ apt install -y \   ffmpeg \   libavcodec-dev \   libavdevice-dev \   libavfilter-dev \   libavformat-dev \   libavresample-dev \   libavutil-dev \   libpostproc-dev \   libswresample-dev \   libswscale-dev     我这里安装的时候需要 cmake3.1.7 ​ https://cmake.org/files/         tar zxvf cmake-3.1.7.tar.gz cd cmake-3.1.7 ​ cmake . ​ make -j8 ​ make install ​ ​ 把原来的cmake替代 root@henley-Inspiron-7447:~/cmake-3.1.7# update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force update-alternatives: using /usr/local/bin/cmake to provide /usr/bin/cmake (cmake) in auto mode ​

正式下载bmf

git clone https://github.com/BabitMF/bmf ​ cd bmf 进行编译安装 ./build.sh

picture.image

加载bmf相关库和头文件,环境 设置 如下

​ 我默认的文件在/root/bmf ​ export pwd=/root/bmf/build export C_INCLUDE_PATH=${C_INCLUDE_PATH}:$(pwd)/output/bmf/include export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:$(pwd)/output/bmf/include export LIBRARY_PATH=${LIBRARY_PATH}:$(pwd)/output/bmf/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(pwd)/output/bmf/lib ​ # only set if you want to use BMF in python export PYTHONPATH=$(pwd)/output/bmf/lib:$(pwd)/output python进入控制,看是否能够加载相关库 ​ import bmf graph = bmf.graph()

picture.image

DEMO使用

/usr/local/bin有一些现成的命令功能,我的理解就是DEMO,看否能够正常使用。

/usr/local/bin/run_bmf_graph 就可以完成一个视频的转码,使用方式如下

/usr/local/bin/run_bmf_graph   /root/bmf/output/test/run_by_config/config.json ​ ​ /root/bmf/input1.mp4是输入, /root/bmf/out.mp4是输出    

config.json的内容如下

{ "mode": "normal", "input_streams": [], "output_streams": [], "option": {   "dump_graph": 1 }, "nodes": [   {     "id": 0,     "option": {       "input_path": "/root/bmf/input1.mp4"     },     "input_streams": [],     "output_streams": [       {         "identifier": "audio:ffmpeg_decoder_0_2",         "alias": ""       },       {         "identifier": "video:ffmpeg_decoder_0_1",         "alias": ""       }     ],     "module_info": {       "name": "c_ffmpeg_decoder",       "type": "",       "path": "",       "entry": ""     },     "input_manager": "immediate",     "scheduler": 0,     "meta_info": {       "premodule_id": -1,       "callback_bindings": []     }   },   {     "id": 1,     "option": {       "name": "scale",       "para": "100:200"     },     "input_streams": [       {         "identifier": "ffmpeg_decoder_0_1",         "alias": ""       }     ],     "output_streams": [       {         "identifier": "ffmpeg_filter_1_0",         "alias": ""       }     ],     "module_info": {       "name": "c_ffmpeg_filter",       "type": "",       "path": "",       "entry": ""     },     "input_manager": "immediate",     "scheduler": 0,     "meta_info": {       "premodule_id": -1,       "callback_bindings": []     }   },   {     "id": 2,     "option": {       "name": "vflip"     },     "input_streams": [       {         "identifier": "ffmpeg_filter_1_0",         "alias": ""       }     ],     "output_streams": [       {         "identifier": "ffmpeg_filter_2_0",         "alias": ""       }     ],     "module_info": {       "name": "c_ffmpeg_filter",       "type": "",       "path": "",       "entry": ""     },     "input_manager": "immediate",     "scheduler": 0,     "meta_info": {       "premodule_id": -1,       "callback_bindings": []     }   },   {     "id": 3,     "option": {       "video_params": {         "width": 320,         "codec": "h264",         "crf": 23,         "preset": "veryfast",         "height": 240       },       "audio_params": {         "channels": 2,         "bit_rate": 128000,         "codec": "aac",         "sample_rate": 44100       },       "output_path": "/root/bmf/out.mp4"     },     "input_streams": [       {         "identifier": "ffmpeg_filter_2_0",         "alias": ""       },       {         "identifier": "ffmpeg_decoder_0_2",         "alias": ""       }     ],     "output_streams": [],     "module_info": {       "name": "c_ffmpeg_encoder",       "type": "",       "path": "",       "entry": ""     },     "input_manager": "immediate",     "scheduler": 1,     "meta_info": {       "premodule_id": -1,       "callback_bindings": []     }   } ] } 我的使用

我对bmf的了解主要是根据这个

https://babitmf.github.io/docs/bmf/quick_experience/

我想了解 python相关的 api,根据这个

https://babitmf.github.io/docs/bmf/api/api_in_python/

我想了解更多的DEMO使用,根据以下demo目录。

picture.image

demo目录下有更多的使用例子

picture.image

建议改进 python api建议以五部分的方式来进行编排分布,再按照工程上的特点来进行分组,再按照功能特点划组织划分 python api的api细粒度参数详解,翻看了几个页面,来回 看了很久,感觉只有对api的声明,缺乏具休的参数调整后带来的变化 。 DEMO示例已经声明技术环境需要准备什么,但是业务来看光从语言还是没有了解到它所处的业务场景 ,建议用视频的方式来表明这个DEMO的示例和起到的效果是要用来做什么。 作为国内不多的多媒 体框架,建议一个命令工具能够马上测出这个效果出来,现在我来看只有一个run_bmf_graph,这个run_bmf_graph感觉 没有那么好用,不能代表bmf。 建议自带 官方的视频数据集在这里,这样使用后能够快速展现结果,而不是我还要上传一个视频。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有