华为云行业视频管理服务IVM对接使用完全指南
1. 行业视频管理服务IVM概述
行业视频管理服务是华为云围绕安全防范、生产管理、智慧运营等场景打造的机器视觉云服务统称。通过行业视频管理、好望开发平台、好望商城等智慧云服务,为企业用户提供智能原生的端云协同行业视频云服务解决方案。IVM支持摄像机、网络视频录像机、智能视频存储等华为及第三方设备的云端视频接入管理、视频云端存储、视频实况与回放调取等能力。
IVM的核心功能模块包括视频接入、视频收录和视频调阅三大板块。视频接入层面支持全行业摄像机、智能视频存储、视频安防平台等的便捷接入,提供高效的设备管理和设备配置能力。视频收录层面提供高可靠、大容量、安全的云端视频持久化存储,涵盖连续存储和动检存储等多种方式。视频调阅层面则提供实况视频、历史录像、设备信息和告警数据的全网高质量调取能力。此外,IVM还支持端侧设备智能算法分析结果的统一接入、存储和开放共享。
在技术优势方面,IVM具备以下显著特点:全云加速实现一点即播的极致视频体验,同等带宽下画质更清晰,网络抖动下播放更流畅;数据安全层面遵循华为云80余项安全合规标准,支持HTTPS安全传输、视频存储加密、数据脱敏和多租户隔离;开放生态方面提供场景化API接口,兼容多终端便捷接入。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 对接前的准备工作
2.1 注册华为账号并开通华为云
使用IVM服务的第一步是注册华为账号并完成实名认证。进入华为云首页后,单击右上角的注册按钮,创建华为账号并开通华为云,随后根据指引完成个人或企业的实名认证。实名认证是使用IVM各项服务的前置条件,未完成实名认证的账号将无法正常使用服务。
2.2 新增访问密钥
完成账号注册和实名认证后,需要新增访问密钥。访问密钥由Access Key和Secret Key两部分组成,密钥文件会自动下载,请务必妥善保存。AK、SK、账号名、账号ID、项目、项目ID会作为后续创建企业时填写的关键参数。
2.3 登录行业视频管理服务后台
使用华为账号或行业视频管理服务账号登录行业视频管理服务后台。登录入口为:https://holosens.huaweicloud.com/portal/#/login。首次登录后需要创建企业,也可以等待管理员邀请加入已有企业。
2.4 创建企业
首次使用行业视频云服务时,可以选择创建企业或等待管理员邀请加入企业。如果需要创建企业,根据页面提示操作即可。创建企业时需要填写之前获取的AK、SK、账号名、账号ID、项目、项目ID等关键参数。
2.5 购买套餐与开通按需计费
用户可以根据实际需求选择合适的套餐包类型和规格,购买接入能力或存储服务。同时需要在华为云控制台开通按需计费功能。套餐购买和按需计费是使用IVM各项增值服务的基础。
3. 设备接入:将摄像机接入IVM平台
设备接入是IVM对接使用的核心环节。IVM支持通过国标GB/T28181协议和好望协议两种方式接入设备。最基础的入门操作包括服务开通、设备组创建和云端接入三个步骤。
3.1 通过国标GB/T28181协议接入设备
GB/T28181协议是中国国家标准规定的视频监控联网协议标准,支持符合GB/T28181-2011或GB/T28181-2016协议标准的网络摄像头和网络硬盘录像机。通过国标协议接入时,需要在IVM云服务平台侧和设备侧分别进行配置。
3.1.1 配置IVM云服务平台侧参数
登录行业视频管理服务后台后,单击设备管理进入设备管理页面,选择需要添加设备的设备组,单击添加设备按钮。添加方式选择单个添加,接入协议选择国标协议。需要填写的关键参数包括:
- 设备名称:自定义设备标识名称,支持数字、中文、英文、空格、连字符和下划线,最大长度128个字符。
- 设备ID:20位纯数字。其中第11至13位与设备类型对应:摄像机为132,NVR为118,DVR为111。
- 设备用户名:登录设备使用的用户名,长度5至32个字符。
- 设备密码:设备在平台中的注册密码。
- 注册认证算法:建议选择SHA256以提高安全性;对于仅支持MD5的设备可选择MD5。
添加设备成功后,系统会弹出添加成功界面,请手动记录SIP相关信息,后续配置设备侧参数时需要使用。
3.1.2 配置设备侧参数
在IVM云服务平台侧完成配置后,还需要在设备侧配置页面填写国标接入参数。以华为摄像机为例:通过Web登录摄像机的Portal界面,选择配置 > 网络 > 平台对接 > 通用协议参数,选择T28181协议。主要配置参数包括:
- GB/T 28181协议:勾选启用。
- 协议类型:根据设备实际情况选择。选择TCC-VMS-2020协议时支持配置主备服务器,可实现故障自动切换。
- 录像查询个数:取值范围1至20,默认为10。
- H.265兼容参数:勾选后支持H.265和H.264两种编码。
- 传输协议:建议优先选择TCP。使用UDP传输时,设备发送的单个SIP/UDP报文必须控制在1300字节以内。
- 最大超时次数:默认3次,心跳信息连续超时达到该次数则认为连接断开。
3.2 通过好望协议接入设备
好望协议是华为自有的设备接入协议,支持华为好望系列摄像机的快速接入。接入步骤与国标协议类似:登录行业视频管理服务后台,单击设备管理,选择设备组后单击添加设备。选择手动添加设备,接入协议选择好望协议。需要填写的关键参数包括:
- 设备ID:好望设备的ID由大小写字母和数字组成,长度范围8至32位,可在设备外壳或设备Web页面上获取。
- 验证码:支持大小写字母和数字,长度固定为8位。
3.3 批量添加设备
当有大批量设备需要接入IVM平台时,可以通过批量添加方式提高效率。在添加设备时选择批量添加设备,按界面提示选择接入协议并下载对应模板。填写模板后上传即可完成批量设备的添加。
4. API对接:通过RESTful API调用IVM服务
IVM提供了REST风格的API,支持通过HTTPS请求进行调用。API对接是软件开发人员将IVM视频能力集成到自有应用系统中的主要方式。
4.1 API调用基础
IVM的API采用RESTful架构风格,通过HTTPS协议进行通信。调用API时需要在请求消息头中添加Authorization字段,其值为获取到的Token。API的Base URL格式为:https://ivm.cn-north-4.myhuaweicloud.com,具体接口路径请参考官方API文档。
4.2 核心API接口概览
IVM的核心API接口涵盖设备管理、媒体播放管理、录像管理等多个维度。媒体播放管理相关接口包括:
- 获取实况播放地址:POST /v2/{user_id}/devices/channels/media/live-connections
- 获取录像回放地址:GET /v2/{user_id}/devices/{device_id}/channels/{channel_id}/media/records
获取实况播放地址时,请求参数支持自定义URL过期时间和使用次数。支持多种媒体播放协议类型,包括好望协议、HLS、HTTP-FLV、HTTPS-FLV和RTSP。码流类型支持主码流、子码流1和子码流2。
4.3 认证与Token获取
调用IVM API前需要先获取认证Token。Token获取接口的调用方式为:向认证服务地址发送POST请求,携带账号名、用户名和密码等认证信息。获取到Token后,在后续API调用的请求头中添加Authorization字段,值为Bearer加上Token字符串。
4.4 Java SDK调用示例
华为云提供了完备的SDK接口供开发者使用。以下是通过Java SDK调用IVM API的代码示例:
package com.huaweicloud.sdk.test;
import com.huaweicloud.sdk.core.auth.Credential;
import com.huaweicloud.sdk.core.auth.GlobalCredentials;
import com.huaweicloud.sdk.core.http.HttpConfig;
import com.huaweicloud.sdk.ivm.v1.IvmClient;
import com.huaweicloud.sdk.ivm.v1.model.*;
public class IvmApiDemo {
public static void main(String[] args) {
// 1. 配置认证信息
String ak = "your-access-key";
String sk = "your-secret-key";
Credential credential = new GlobalCredentials()
.withAk(ak)
.withSk(sk);
// 2. 创建客户端
HttpConfig httpConfig = HttpConfig.getDefaultHttpConfig();
IvmClient client = IvmClient.newBuilder()
.withCredential(credential)
.withHttpConfig(httpConfig)
.withEndpoint("https://ivm.cn-north-4.myhuaweicloud.com")
.build();
// 3. 构造请求 - 获取设备实况播放地址
GetLiveUrlRequest request = new GetLiveUrlRequest();
request.setUserId("your-user-id");
GetLiveURLChannelsParam channelParam = new GetLiveURLChannelsParam();
channelParam.setDeviceId("device-id");
channelParam.setChannelId("channel-id");
channelParam.setStreamType(StreamTypeEnum.PRIMARY_STREAM);
channelParam.setProtocol(ProtocolEnum.HOLO);
request.setChannels(Arrays.asList(channelParam));
request.setExpireTime(3600); // URL有效期为3600秒
// 4. 发起调用
try {
GetLiveUrlResponse response = client.getLiveUrl(request);
System.out.println("播放地址: " + response.getLiveUrls());
} catch (Exception e) {
e.printStackTrace();
}
}
}4.5 Python SDK调用示例
以下是使用Python SDK调用IVM API的代码示例:
import requests
import json
import time
class IvmApiClient:
def __init__(self, ak, sk, user_id):
self.ak = ak
self.sk = sk
self.user_id = user_id
self.base_url = "https://ivm.cn-north-4.myhuaweicloud.com"
self.token = None
def get_token(self):
"""获取认证Token"""
url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens"
payload = {
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "your-username",
"password": "your-password",
"domain": {"name": "your-domain"}
}
}
},
"scope": {"project": {"name": "cn-north-4"}}
}
}
response = requests.post(url, json=payload)
self.token = response.headers.get("X-Subject-Token")
return self.token
def get_live_url(self, device_id, channel_id, expire_time=3600):
"""获取设备实况播放地址"""
if not self.token:
self.get_token()
url = f"{self.base_url}/v2/{self.user_id}/devices/channels/media/live-connections"
headers = {
"Authorization": f"Bearer {self.token}",
"Content-Type": "application/json"
}
payload = {
"channels": [{
"device_id": device_id,
"channel_id": channel_id,
"stream_type": "PRIMARY_STREAM",
"protocol": "HOLO"
}],
"expire_time": expire_time
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
def get_record_url(self, device_id, channel_id, begin_time, end_time):
"""获取录像回放地址"""
if not self.token:
self.get_token()
url = f"{self.base_url}/v2/{self.user_id}/devices/{device_id}/channels/{channel_id}/media/records"
headers = {
"Authorization": f"Bearer {self.token}",
"Content-Type": "application/json"
}
params = {
"begin_time": begin_time,
"end_time": end_time
}
response = requests.get(url, headers=headers, params=params)
return response.json()
# 使用示例
if __name__ == "__main__":
client = IvmApiClient("your-ak", "your-sk", "your-user-id")
# 获取实况播放地址
live_result = client.get_live_url("device_001", "channel_001", 7200)
print("实况地址:", json.dumps(live_result, indent=2, ensure_ascii=False))
# 获取录像回放地址
record_result = client.get_record_url(
"device_001",
"channel_001",
int(time.time()) - 86400, # 24小时前
int(time.time())
)
print("录像地址:", json.dumps(record_result, indent=2, ensure_ascii=False))4.6 SDK支持平台
IVM的SDK支持多种平台,包括安卓、iOS、PC和Web。具体包括:HoloSens-Android-SDK、HoloSens-IOS-SDK、HoloSens-PC-SDK和HoloSens-Smart-WebPlugin。SDK提供了完整的直播能力和回放能力。直播功能包含直播预览、直播音频、直播抓图、直播录像和语音对讲。回放功能包括设备录像回放和云端录像回放,涵盖录像查询、录像日历、录像回放视频、录像回放音频、录像回放跳转、录像回放暂停与播放、录像回放倍速控制、回放抓图和回放录像等。
5. 服务配置:接入调阅与录像存储
设备成功接入IVM平台后,需要为视频点位绑定相应的服务,才能实现视频的调阅和存储功能。
5.1 接入调阅服务
接入调阅服务提供视频接入和管理功能,开通后可以查看实况视频和录像。接入调阅服务是所有视频相关功能的基础,使用录像存储服务前必须先配置接入调阅服务。在设备管理页面选择需要开通服务的视频点位,绑定接入调阅服务即可。
5.2 录像存储服务
录像存储服务提供云端视频存储功能。开通后需要设置录像计划进行录像存储。录像存储支持连续存储和动检存储等多种方式。需要注意的是,关闭录像存储服务后会删除所有已存储的录像文件。
5.3 行业数据流服务
行业数据流服务提供端侧设备智能算法分析结果的统一接入、存储和开放共享功能。通过该服务,上层应用可以获取设备的智能分析结果,实现智能算法的业务闭环。
6. 分权分域管理
IVM支持设备及用户多层级多组织的分权分域管理。通过添加部门和用户,可以实现精细化的权限控制。管理员可以创建不同的部门,为每个部门分配不同的设备组,并为用户设置不同的设备访问权限。这种分权分域机制适用于大型连锁企业、多园区管理等场景,确保不同组织单元只能访问其授权范围内的视频资源。
7. 典型应用场景
IVM广泛应用于多个行业场景中。
智慧连锁解决方案:为商超、门店、餐饮等连锁企业提供机器视觉建设方案。通过接入摄像机和NVR,基于视频管理、视频存储、视频分析的相关能力,开发视频巡店、点检考评等功能。智慧门店提供智能远程点检、看店、客流统计等智能应用,助力门店解决运营成本高、防盗难、货物摆放不合理等问题。智慧餐饮通过AI视频分析,借助算法识别未戴厨师帽、未穿厨师服、烟火等场景,实时抓拍并及时推送告警。智慧4S店支持客流统计、门店管理、远程巡店、核检管理等功能。
智慧工地解决方案:通过设备上云统一管理,基于人员分级管理设备权限,纳管所有工地视频。通过智能AI算法精准识别工地安全风险并实时告警,预防事故发生。
智慧社区解决方案:通过机器视觉感知终端,实现社区内人、房、地、事、物信息的全面掌控。与上级平台数据资源互联互通,实现人员甄别和视频周界管控。
8. 常见问题解答
问1:IVM服务支持哪些类型的设备接入?
答:IVM支持华为及第三方设备的接入,包括摄像机、网络视频录像机、智能视频存储等。接入协议支持国标GB/T28181协议和好望协议。符合GB/T28181-2011或GB/T28181-2016协议标准的网络摄像头和网络硬盘录像机均可接入。
问2:IVM与原来的好望云服务是什么关系?
答:行业视频管理服务IVM原名好望云服务。服务更名后功能和能力持续增强,当前支持视频接入、视频收录、视频调取和行业数据流的能力。
问3:如何获取设备的实况播放地址?
答:可以通过调用IVM的API接口获取实况播放地址。具体为POST请求到/v2/{user_id}/devices/channels/media/live-connections。请求时需要指定设备ID、通道ID、码流类型和播放协议等参数。播放地址支持自定义过期时间。
问4:IVM的录像存储在关闭服务后会怎样?
答:关闭录像存储服务后,系统会删除所有已存储的录像文件。因此在关闭服务前请确保已备份重要的录像数据。
问5:IVM是否支持第三方应用的视频对接和开发?
答:支持。IVM提供设备SDK和开发指南,供合作伙伴集成接入,提供快速接入的能力。同时IVM提供开放的场景化API接口,便于设备快速升级和灵活配置。
问6:设备接入国标协议时,传输协议应该选择TCP还是UDP?
答:建议优先选择TCP传输协议。使用UDP传输协议时,设备发送的单个SIP/UDP报文必须控制在1300字节以内。TCP协议在传输稳定性和报文大小限制方面更具优势。




