该教程仅仅用于学习,打通流程; 不对效果负责,不承诺商用。
本工具集主要基于Docker容器进行FFmpeg-MLU环境搭建与验证。力求压缩寒武纪FFmpeg-MLU环境搭建与功能验证的时间成本, 以便快速上手寒武纪FFmpeg-MLU。
说明:
基于寒武纪® MLU硬件平台,寒武纪 FFmpeg-MLU使用纯C接口实现硬件加速的视频编解码。
名称 | 数量 | 备注 |
---|---|---|
开发主机/服务器 | 一台 | 主流配置即可;电源功率按需配置;PCIe Gen.3 x16/Gen.4 x16 |
MLU270/MLU370 | 一套 | 二选一, 尽量避免混插混用 |
名称 | 版本/文件 | 备注 |
---|---|---|
Linux OS | Ubuntu16.04/Ubuntu18.04/CentOS7 | 宿主机操作系统 |
以下为MLU270软件依赖包 | ||
Driver_MLU270 | neuware-mlu270-driver-dkms_4.9.8_all.deb | 手动下载 |
CNToolkit_MLU270 | cntoolkit_1.7.5-1.ubuntu16.04_amd64.deb | 手动下载 |
CNCV_MLU270 | cncv_0.4.602-1.ubuntu16.04_amd64.deb | 手动下载 |
以下为MLU370软件依赖包 | ||
Driver_MLU370 | cambricon-mlu-driver-ubuntu18.04-dkms_5.10.22_amd64.deb | 手动下载 |
CNToolkit_MLU370 | cntoolkit_3.7.2-1.ubuntu18.04_amd64.deb | 手动下载 |
CNCV_MLU370 | cncv_2.3.0-1.ubuntu18.04_amd64.deb | 手动下载 |
FFmpeg-MLU | FFmpeg-MLU | 自动下载 |
FFmpeg | FFmpeg | 自动下载 |
以上软件包涉及FTP手动下载的,可下载到本地dependent_files目录下,方便对应以下步骤中的提示操作。
以上软件包也可关注微信公众号 【 AIKnight 】, 发送关键字 FFmpeg-MLU 自动获取,获取后放置到本地dependent_files目录下,方便对应以下步骤中的提示操作。
AIKnight公众号
MLU开发文档: https://developer.cambricon.com/index/document/index/classid/3.html
Neuware SDK: https://cair.cambricon.com/#/home/catalog?type=SDK%20Release
其他开发资料, 可前往寒武纪开发者社区注册账号按需下载。也可在官方提供的专属FTP账户指定路径下载。
当前仓库默认基于Docker 进行FFmpeg-MLU 环境搭建与验证。按照以下章节步骤即可快速实现FFmpeg-MLU环境搭建与验证
.
├── build-image-ffmpeg-mlu.sh #此脚本用于编译Docker 镜像用于搭建FFmpeg-MLU 环境
├── clean.sh #清理Build出来的临时目录或文件,包括镜像文件,已加载的镜像,已加载的容器等
├── dependent_files #此目录主要用于存储仓库所需依赖文件
│ └── README.md
├── docker #此目录主要用于存储编译Docker 镜像及验证FFmpeg-MLU 所需依赖文件
│ ├── build-ffmpeg-mlu.sh #此脚本用于编译FFmpeg-MLU 及相关依赖项, 也可用于裸机下环境搭建
│ ├── clean.sh #清理当前目录下新编译生存的Docker 镜像文件
│ ├── Dockerfile.16.04 #用于编译Docker 镜像的Dockerfile 文件
│ ├── Dockerfile.18.04 #用于编译Docker 镜像的Dockerfile 文件
│ ├── install_cntoolkit.sh #安装cntoolkit脚本
│ ├── pip.conf #切换python的pip源
│ ├── pre_packages18.04.sh #安装基于操作系统所需依赖包, 也可用于裸机下环境搭建
│ ├── pre_packages.sh #安装基于操作系统所需依赖包, 也可用于裸机下环境搭建
│ ├── requirements.txt #requirements文件
│ ├── sources_18.04.list #Ubuntu18.04 sources文件
│ └── sources_16.04.list #Ubuntu16.04 sources文件
├── load-image-ffmpeg-mlu.sh #加载Docker 镜像
├── README.md #README
├── res #资源图库
├── run-container-ffmpeg-mlu.sh #启动Docker 容器
├── save-image-ffmpeg-mlu.sh #导出镜像文件,实现镜像内容持久化
├── sync.sh #同步[dependent_files] 到临时目录[ffmpeg-mlu]
├── test #测试FFmpeg-MLU 相关功能目录
│ ├── api #API方式测试
│ ├── cmd #命令方式测试
│ ├── data #测试数据
│ └── README.md
└── tools #常用工具存放目录
如需在裸机HOST上进行环境搭建, 也可以利用docker目录以下脚本实现快速搭建。
.
├── docker
│ ├── build-ffmpeg-mlu.sh #此脚本用于编译FFmpeg-MLU 及相关依赖项, 也可用于裸机下环境搭建
│ ├── pre_packages.sh #安装基于操作系统所需依赖包, 也可用于裸机下环境搭建
│ ├── pre_packages18.04.sh #安装基于操作系统所需依赖包, 也可用于裸机下环境搭建
│ ├── sources_18.04.list #Ubuntu18.04 sources文件
│ └── sources_16.04.list #Ubuntu16.04 sources文件
git clone https://github.com/CambriconKnight/ffmpeg-mlu-docker-image.git
#编译 ffmpeg-mlu 镜像
./build-image-ffmpeg-mlu.sh
编译镜像实例
#加载Docker镜像
./load-image-ffmpeg-mlu.sh
#启动Docker容器
./run-container-ffmpeg-mlu.sh
# 安装第三方库,根据实际网络环境情况,需要一定安装时间
cp -rvf /home/share/docker/pre_packages18.04.sh /root/ffmpeg-mlu
cd /root/ffmpeg-mlu
./pre_packages18.04.sh
# 编译ffmpeg-mlu
cp -rvf /home/share/docker/build-ffmpeg-mlu.sh /root/ffmpeg-mlu
cd /root/ffmpeg-mlu
./build-ffmpeg-mlu.sh MLU370
编译FFMpeg-MLU实例
以下测试验证步骤都是基于Docker容器内环境.
#基于 FFMPEG 命令行方式验证多路并行解码, 可用于上手阶段压测MLU板卡硬件解码能力.
cd /home/share/test/cmd
./test-ffmpeg-mlu-cmd-decode.sh
MLU解码实例-解码128路高清视频
#基于 FFMPEG 命令行方式验证多路并行编码, 可用于上手阶段压测MLU板卡硬件编码能力.
cd /home/share/test/cmd
./test-ffmpeg-mlu-cmd-encode.sh
MLU编码实例-编码24路高清视频
#基于FFMPEG转码有两种方式
#1、命令行方式
cd /home/share/test/cmd
./test-ffmpeg-mlu-cmd.sh
#2、API接口调用方式
cd /home/share/test/api
./test-ffmpeg-mlu-api.sh
保存镜像,供后续环境变更直接使用。
./save-image-ffmpeg-mlu.sh
保存镜像实例
[username@worker1~/nfs/github/ffmpeg-mlu-docker-image]$sudo ./save-image-ffmpeg-mlu.sh
[sudo] password for username:
[# Docker images:
username/ubuntu18.04-ffmpeg-mlu v1.15.0 ec2351bca63c About an hour ago 3.59GB
Images does not exist!
[# Docker container:
4f833ee85d89 username/ubuntu18.04-ffmpeg-mlu:v1.15.0 "/bin/bash" 58 minutes ago Exited (0) 19 seconds ago container-ubuntu18.04-ffmpeg-mlu-v1.15.0-username
[# Commit docker container:
sha256:a9823f8021cb33f8dba7238699152e70c398f4367267363da0c2cf91103e1441
Completed!
[# Docker images:
username/ubuntu18.04-ffmpeg-mlu v1.15.0-20231121191123 a9823f8021cb 1 second ago 6.02GB
username/ubuntu18.04-ffmpeg-mlu v1.15.0 ec2351bca63c About an hour ago 3.59GB
[# Save docker image:
-rw------- 1 root root 5.7G Nov 21 19:14 image-ubuntu18.04-ffmpeg-mlu-v1.15.0-20231121191123.tar.gz Completed!
[username@worker1~/nfs/github/ffmpeg-mlu-docker-image]$