var _tokenID;
|
var _accessToken;
|
//var _mediaServerName;
|
//var _mediaTCPPort;
|
//var _mediaUserName;
|
//var _mediaPassword;
|
//var _voiceDomainName;
|
//var _voiceTCPPort;
|
var _mediaServerName;//请求广播时返回的服务器名,用于打于广播时
|
var _mediaTCPPort;//请求广播时返回的服务器名,用于打于广播时
|
var _deviceId;
|
var _channelId;
|
var _isHttps = 0;
|
|
//获取流媒体配置信息
|
//function getMeidaServerInfo() {
|
// httpGet("MediaAPI/BaseInfo/GetMeidaServerInfo",
|
// { accessToken: _accessToken }, function (result) {
|
// if (result.ResultState == 1) {
|
// _mediaServerName = result.ResultData.MediaServerName;
|
// _mediaTCPPort = result.ResultData.MediaTCPPort;
|
// _mediaUserName = result.ResultData.MediaUserName;
|
// _mediaPassword = result.ResultData.MediaPassword;
|
// _voiceDomainName = result.ResultData.VoiceDomainName;
|
// _voiceTCPPort = result.ResultData.VoiceTCPPort;
|
// if (window.location.protocol == "https:") { _isHttps = 1; }
|
// }
|
// else {
|
// alert(result.ResultMessage);
|
// }
|
// });
|
//};
|
function dateDigitToString (num) {
|
return num < 10 ? '0' + num : num;
|
};
|
//前面补0
|
function PrefixInteger(num, n) {
|
return (Array(n).join(0) + num).slice(-n);
|
}
|
//拖动
|
function historyDragVideo(newtime) {
|
var year = dateDigitToString(newtime.getFullYear()),
|
month = dateDigitToString(newtime.getMonth() + 1),
|
date = dateDigitToString(newtime.getDate()),
|
hour = dateDigitToString(newtime.getHours()),
|
minute = dateDigitToString(newtime.getMinutes()),
|
second = dateDigitToString(newtime.getSeconds()),
|
formattedDateString = year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
|
httpGetAsync("MediaAPI/ReplayStream/ReplayControl",
|
{
|
accessToken: _accessToken,
|
deviceId: _deviceId,
|
channelId: _channelId,
|
playType: 5,
|
multiple: 0,
|
dragDropPosition: formattedDateString
|
}, function (data) {
|
if (data.ResultState == 1) {
|
alert("拖动成功");
|
}
|
else {
|
alert("拖动失败");
|
}
|
});
|
};
|
|
|
var hstVideoPlay = {
|
/*------------公共功能开始--------------------------------*/
|
//初始化
|
init: function (tokenID, domId, params, wisdowCount) {
|
_tokenID = tokenID;
|
//视频插件宽度
|
var width = document.getElementById(domId).style.width;
|
//视频插件高度
|
var height = document.getElementById(domId).style.height;
|
hstVideoAll.init(domId, width, height, params);
|
hstVideoAll.setWindowCount(wisdowCount);
|
this.getToken();
|
|
},
|
//只初始化语音,不包括视频。
|
initVoice: function (tokenID) {
|
_tokenID = tokenID;
|
this.getToken();
|
},
|
getToken: function () {
|
var url = "MediaAPI/Token";
|
httpGet(url, { token: _tokenID }, function (result) {
|
_accessToken = result.Access_Token;
|
if (window.location.protocol == "https:") { _isHttps = 1; }
|
//getMeidaServerInfo();
|
});
|
},
|
setWindowCount: function (wisdowCount) {
|
hstVideoAll.setWindowCount(wisdowCount);
|
},
|
|
/*------------公共功能结束--------------------------------*/
|
|
/*------------历史播放开始--------------------------------*/
|
//历史音视频资源检索
|
historySeach: function (deviceId, channelId, startTime, endTime, alarmType, dataType, streamType, storageType) {
|
var resultOK;
|
if (_accessToken == "") {
|
getToken();
|
}
|
_deviceId = deviceId;
|
_channelId = channelId;
|
var url = "MediaAPI/MediaSearch/SearchResourceList";
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
parms.channelId = channelId;
|
parms.startTime = startTime;
|
parms.endTime = endTime;
|
parms.alarmType = alarmType;
|
parms.dataType = dataType;
|
parms.streamType = streamType;
|
parms.storageType = storageType;
|
httpGetAsync(url, parms, function (result) {
|
resultOK = result;
|
});
|
return resultOK;
|
},
|
//打开历史播放
|
historyOpenVideo:function (deviceId, channelId, dataType, streamType, storageType, startTime, endTime) {
|
httpGetAsync("MediaAPI/ReplayStream/ReplayVideo",
|
{
|
accessToken: _accessToken,
|
deviceId: deviceId,
|
channelId: channelId,
|
dataType: dataType,
|
streamType: streamType,
|
storageType: storageType,
|
playType: 0,
|
multiple: 0,
|
startTime: startTime,
|
endTime: endTime
|
}, function (result) {
|
if (result.ResultState == 1) {
|
_channelId = channelId;
|
var r = "";
|
//设备类型为深圳标是加"-r";
|
if (result.ResultData.MediaType == 1) { r = "-r" }
|
//设备类型为粤标通讯id补足20位;
|
//if (result.ResultData.MediaType == 4) { deviceId = PrefixInteger(deviceId, 20); }
|
_deviceId = deviceId;
|
if (_isHttps == 1) {
|
hstVideoAll.StartRemotePlayback(
|
result.ResultData.MediaServerDomainName,
|
result.ResultData.MediaServerHttpsPort,
|
//_voiceDomainName,
|
//_voiceTCPPort,
|
deviceId + "_" + channelId + r,
|
startTime,
|
endTime,
|
historyDragVideo);
|
}
|
else {
|
hstVideoAll.StartRemotePlayback(
|
result.ResultData.MediaServerName,
|
result.ResultData.MediaTCPPort,
|
//_mediaServerName,
|
//_mediaTCPPort,
|
deviceId + "_" + channelId + r,
|
startTime,
|
endTime,
|
historyDragVideo);
|
}
|
}
|
else {
|
alert(result.ResultMessage);
|
}
|
});
|
},
|
//关闭播放历史
|
historyCloseVideo: function (deviceId, channelId) {
|
hstVideoAll.CloseRemotePlayback(deviceId + "_" + channelId);
|
httpGet("MediaAPI/ReplayStream/ReplayControl", {
|
accessToken: _accessToken,
|
deviceId: deviceId,
|
channelId: channelId,
|
playType: 2,
|
multiple: 0,
|
dragDropPosition: "2019/01/11"
|
}, function (data) { });
|
},
|
/*------------历史播放结束--------------------------------*/
|
|
/*------------实时播放开始--------------------------------*/
|
//打开实时视频
|
realTimeOpenVideo: function (deviceId, channelId) {
|
var parms = {};
|
parms.accessToken = _accessToken,
|
parms.deviceId = deviceId;
|
parms.channelId = channelId;
|
parms.dataType = 0;
|
parms.streamType = 1;
|
var url = "MediaAPI/RealTimeStream/OpenVideo";
|
httpGet(url, parms, function (result) {
|
if (result.ResultState == 1) {
|
//设备类型为粤标通讯id补足20位;
|
//if (result.ResultData.MediaType == 4) { deviceId = PrefixInteger(deviceId, 20); }
|
if (_isHttps == 1) {
|
hstVideoAll.openVideo(
|
result.ResultData.MediaServerDomainName,
|
result.ResultData.MediaServerHttpsPort,
|
//_voiceDomainName,
|
//_voiceTCPPort,
|
deviceId + "_" + channelId);
|
}
|
else {
|
hstVideoAll.openVideo(
|
result.ResultData.MediaServerName,
|
result.ResultData.MediaTCPPort,
|
// _mediaServerName,
|
//_mediaTCPPort,
|
deviceId + "_" + channelId);
|
}
|
} else {
|
alert(result.ResultMessage);
|
}
|
});
|
},
|
//关闭实时视频
|
realTimeCloseVideo: function (deviceId, channelId) {
|
hstVideoAll.closeVideo(deviceId + "_" + channelId);
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
parms.channelId = channelId;
|
var url = "MediaAPI/RealTimeStream/CloseVideo";
|
httpGet(url, parms, function (result) {});
|
},
|
/*------------实时播放结束--------------------------------*/
|
|
/*------------实时语音开始--------------------------------*/
|
//打开语音(广播分二步走,走完本方法后取的通道号,再调用realTimeOpenBroadcast)
|
realTimeOpenVoice: function (deviceId, channelId, dataType) {
|
|
if (dataType == 3) {
|
//广播
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
var url = "MediaAPI/RealTimeStream/BroadcastRequest";
|
httpGet(url, parms, function (result) {
|
var guangboType = 1;
|
if (result.ResultData.MediaType != 1) {
|
guangboType = 2;
|
}
|
if (result.ResultState == 1) {
|
_mediaServerName = result.ResultData.MediaServerName;
|
_mediaTCPPort=result.ResultData.MediaTCPPort;
|
hstVideoAll.JsStartBroadcast(
|
result.ResultData.MediaServerName,
|
result.ResultData.MediaTCPPort,
|
result.ResultData.MediaServerHttpsPort,
|
//_voiceDomainName,
|
//_mediaTCPPort,
|
//_voiceTCPPort,
|
parseInt(guangboType),
|
result.ResultData.MediaUserName,
|
result.ResultData.MediaPassword);
|
//_mediaUserName,
|
//_mediaPassword);
|
}
|
});
|
}
|
else {
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
parms.channelId = channelId;
|
parms.dataType = dataType;
|
parms.streamType = 1;
|
var url = "MediaAPI/RealTimeStream/OpenVoice";
|
httpGet(url, parms, function (result) {
|
if (result.ResultState == 1) {
|
//对讲接口的结果 result.ResultData.MediaType协议类型 详细可参考接口文档 水务固定填1即可
|
if (dataType == 1) {//对讲
|
hstVideoAll.JsStartTalk(
|
result.ResultData.MediaServerDomainName,
|
result.ResultData.MediaTCPPort,
|
result.ResultData.MediaServerHttpsPort,
|
//_voiceDomainName,
|
//_mediaTCPPort,
|
//_voiceTCPPort,
|
parms.deviceId,
|
parms.channelId,
|
result.ResultData.MediaType,
|
result.ResultData.MediaUserName,
|
result.ResultData.MediaPassword);
|
//_mediaUserName,
|
//_mediaPassword);
|
}
|
else if (dataType == 2) {
|
//监听
|
hstVideoAll.JsStartMonitor(
|
result.ResultData.MediaServerDomainName,
|
result.ResultData.MediaTCPPort,
|
result.ResultData.MediaServerHttpsPort,
|
//_voiceDomainName,
|
//_mediaTCPPort,
|
//_voiceTCPPort,
|
parms.deviceId,
|
parms.channelId,
|
result.ResultData.MediaType,
|
result.ResultData.MediaUserName,
|
result.ResultData.MediaPassword);
|
//_mediaUserName,
|
//_mediaPassword);
|
}
|
}
|
else {
|
alert(result.ResultMessage);
|
}
|
});
|
}
|
},
|
//广播时,得到通道号再下发命令。
|
realTimeOpenBroadcast: function (deviceId, backChannelId) {
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
parms.channelId = backChannelId;
|
parms.streamType = 1;
|
parms.mediaServerName = _mediaServerName;
|
parms.mediaTCPPort = _mediaTCPPort;
|
var url = "MediaAPI/RealTimeStream/OpenBroadcast";
|
httpGet(url, parms, function (result) {
|
if (result.ResultState != 1) {
|
alert(result.ResultMessage);
|
}
|
});
|
},
|
//关闭语音
|
realTimeCloseVoice: function (deviceId, channelId, dataType) {
|
var parms = {};
|
parms.accessToken = _accessToken;
|
parms.deviceId = deviceId;
|
parms.channelId = channelId;
|
parms.dataType = dataType;
|
var url = "MediaAPI/RealTimeStream/CloseVoice";
|
httpGet(url, parms, function (result) {
|
if (result.ResultState == 1) {
|
if (dataType == 1) {//对讲
|
hstVideoAll.JsCloseTalk(parms.deviceId, parms.channelId);
|
} else if (dataType == 2) {//监听
|
hstVideoAll.JsCloseMonitor(parms.deviceId, parms.channelId);
|
} else if (dataType == 3) {//广播
|
hstVideoAll.JsCloseBroadcast();
|
}
|
} else {
|
alert(result.ResultMessage);
|
}
|
});
|
}
|
|
/*------------实时语音结束--------------------------------*/
|
}
|