EN|CN
本文介绍视频转码demo。该demo旨在验证DaVinci芯片DVPP模块的视频转码能力,同时也提供了一个基于Atlas 800 (Model 3000)的转码功能demo。demo的主要功能是:接收RTSP协议视频流(1080p分辨率,H.264编码格式)输入,通过DaVinci芯片的DVPP模块将视频流转换为D1或者CIF格式,并将转码的视频通过RTSP协议推送出去,实现视频的转码功能。该系统包含如下几大主要功能模块:主控模块(用于系统配置、任务分发、创建多图)、拉流模块、视频解码模块、视频编码模块及视频推流模块。只有解码及编码模块利用DVPP的硬件能力,其他模块均运行在主机端CPU上。本文主要介绍运行该demo所需的环境配置和使用步骤。
[TOC]
Atlas 800 (Model 3000)
1.31.T15.B150 或 1.3.5.B896 或 1.32.T7.B070
Ubuntu ARM 18.04
本demo源代码的目录结构如下:
├── build
│ ├── build_local.sh
│ └── cmake
├── README.en.md
├── README.zh.md
└── src
├── common
├── config
│ ├── cfg.ini
│ └── graph.prototxt
├── device
│ ├── CMakeLists.txt
│ ├── vdec_engine
│ └── venc_engine
├── host
│ ├── CMakeLists.txt
│ ├── dest_engine
│ ├── main.cpp
│ └── src_engine
└── script
└── run.sh
所有源文件位于src目录中;build目录包含编译脚本。其中,src/config文件夹包含用户配置文件和Matrix框架配置文件。host/src_engine为拉流模块,host/dest_engine为推流模块;device/vdec_engine为视频帧解码、缩放模块,device/venc_engine为视频编码模块;common为公共模块,如配置文件解析、数据传输序列化及反序列化等;script包含运行本demo的脚本。
拉流和推流功能基于FFmpeg 4.2。请参考FFmpeg开源工程进行源码编译和安装,并确保FFmpeg的安装目录下包含include和lib文件夹,如下所示:
├── FFmpeg
| ├── include
| ├── lib
(1)修改build/build_local.sh: 将export DDK_HOME=/home/ddkuser/ddk_path/ddk 修改为实际DDK目录; 将FFMPEG_PATH="/usr/local/ffmpeg" 修改为实际FFmpeg目录。
(2)在build目录下执行build_local.sh构建工程。
./build_local.sh
用户需要根据实际业务场景修改/src/config中的cfg.ini配置文件,并根据需要创建多个配置文件以支持多路视频流转码场景。一个cfg.ini配置文件对应一个chip(一个chip表示1个Ascend310芯片),一个chip上可运行多路视频流转码,用户需为每个chip创建一个配置文件。 例如,若用户配置8张Atlas 300 3000卡,期望将320路视频转码部署在全部的Atlas 300卡上,由于每张Atlas 300卡包含4个chip,共有32个chip,因此共需32个配置文件,每个配置文件配置10路视频流。配置文件需以cfg0.ini、cfg1.ini、cfg2.ini......cfg31.ini连续命名,并保存于src/config目录下。每个配置文件的字段说明如下表,用户目前只需修改前5个字段中的内容:
字段 | 类型 | 说明 |
---|---|---|
chip_id | 数字 | 配置文件对应的chip(device) id |
channel_num | 数字 | 每个chip上运行的视频流路数 |
output_video_format | 数字 | 输出视频格式,目前支持D1(设置0),CIF(设置1)模式 |
video# | 字符串 | 输入视频流地址,有多路时通过#序号区分,必须确保路数与channel_num一致 |
stream# | 字符串 | 输出视频流地址,有多路时通过#序号区分,必须确保路数与channel_num一致 |
venc_control_bitrate_type | 数字 | 编码模式,VBR:1, CBR:2 |
venc_frame_rate | 数字 | 视频源帧率,范围为[1, 240]的整数。 |
venc_bit_rate | 数字 | 控制码率字段, 单位为kbps,取值范围为[10, 28672]的整数。 |
graph_id | 数字 | 预设graph ID,默认为10000,用户不应修改此字段 |
src_engine_id | 数字 | 预设拉流引擎ID,默认为1000,用户不应修改此字段 |
dest_engine_id | 数字 | 预设推流引擎ID,默认为4000,用户不应修改此字段 |
graph_path | 字符串 | 预设graph配置文件路径,默认为../src/config/graph.prototxt,用户不应修改此字段 |
由于Atlas 300安全限制,执行本demo的Linux用户必须属于HwHiAiUser组。运行前,请确保当前用户已切换到HwHiAiUser组。 进入编译时自动创建的bin目录,并带参数执行run.sh脚本,参数为使用的chip个数,需和用户配置文件个数相同,例如有32个配置文件时,执行以下命令:
cd bin
./run.sh 32
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。