音视频通话

监控设备对接

功能介绍

SDK 支持通过邀请方式将监控设备加入房间。设备入会后作为房间成员,其他用户可订阅观看其视频,也可通过 云端录制 对画面进行录制。

当前支持的拉流协议:

协议 邀请地址示例
RTSP rtsp://192.168.1.163:554/live/av0
RTMP rtmp://192.168.1.2/live/livestream0
ONVIF onvif://admin:8888@192.168.1.3:8080/live
GB28181 gb28181:44010200402000000123(须先完成平台注册,44010200402000000123 为通道号)

使用介绍

1. 邀请监控设备

注意:

须在成功进入房间后,方可发起邀请。

本功能通常用于私有化部署:流媒体服务须能直接访问监控设备地址,一般要求服务器与监控设备在同一内网。

GB28181 须先完成对接注册,具体用法请咨询商务。

invitedUserID 填写监控流地址(见上表)。usrExtDat 须包含会议号及 devInfouserIDnickName 等约定字段):

const targetUrl = "rtsp://192.168.1.163:554/live/av0";
// const targetUrl = "rtmp://192.168.1.2/live/livestream0";
// const targetUrl = "onvif://admin:8888@192.168.1.3:8080/live";
// const targetUrl = "gb28181:44010200402000000123";

const usrExtDat = JSON.stringify({
  meeting: { ID: 88888888 },
  devInfo: {
    userID: "该设备在房间中的用户ID",
    nickName: "该设备在房间中的昵称",
  },
});

const inviteID = CRVideo_Invite(targetUrl, usrExtDat);
CRVideo_InviteSuccess.callback = function (inviteID, cookie) {
  // 邀请发送成功,等待接受/拒绝或超时
};

CRVideo_InviteFail.callback = function (inviteID, sdkErr, cookie) {
  // 邀请发送失败
};

相关 API 请参考:

2. 邀请被接受/拒绝

CRVideo_NotifyInviteAccepted.callback = function (inviteID, userExtDat) {
  // 邀请被接受,等待设备进入房间
};

CRVideo_NotifyInviteRejected.callback = function (inviteID, reason, userExtDat) {
  // 邀请被拒绝
};

相关 API 请参考:

3. 设备进入房间

设备入会后作为普通成员出现在房间内:

CRVideo_UserEnterMeeting.callback = function (userID) {
  // userID 为邀请时 devInfo.userID 中指定的值
  // 可订阅观看视频,不需要时可请出房间
};

4. 观看监控画面

设备入会并推送视频后,使用视频 UI 组件订阅显示,参见 订阅并显示视频setVideoUID 使用邀请时 devInfo.userID 指定的用户 ID。

var videoUI = CRVideo_CreatVideoObj();
document.getElementById("videoContainer").appendChild(videoUI.handler());
videoUI.setVideo(deviceUserID);

5. 请出监控设备

不需要继续观看时,具备权限的用户可调用 CRVideo_Kickout 将设备请出房间,用法见 进入/离开房间 中「请出房间」一节。

相关 API 请参考:

相关文档