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); } }); } /*------------实时语音结束--------------------------------*/ }