var playNum = 1;
var playUrl = null;
var videoId = null;
let webrtc1;
let mediaStream1;
let webrtc2;
let mediaStream2;
let webrtc3;
let mediaStream3;
/**
* 页面最多同时调用三个视频,一个车牌识别,抓拍,三个顺序执行
* @param lprParam 车牌识别参数
* @param snapParam1 抓拍参数1
* @param snapPram2 抓拍参数2
*/
function initVideo(snapParam1, snapParam2, snapPram3) {
//车牌识别播放
if (snapParam1) {
$.ajax({
type: "POST",
url: "../../inout/api/inout-video-play",
dataType: "json",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(snapParam1),
success: function (result) {
if (result.code != "SUCCESS") {
layer.msg(result.msg);
} else {
initSnapVideo(result, 1);
}
//执行第二个
initVideo2(snapParam2, snapPram3);
},
error: function () {
layer.msg("过程1摄像头配置失败……");
//执行第二个
initVideo2(snapParam2, snapPram3);
}
});
} else {
initVideo2(snapParam2, snapPram3);
}
}
function initVideo2(snapParam2, snapParam3) {
if (snapParam2) {
$.ajax({
type: "POST",
url: "../../inout/api/inout-video-play",
dataType: "json",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(snapParam2),
success: function (result) {
if (result.code != "SUCCESS") {
layer.msg(result.msg);
} else {
initSnapVideo(result, 2);
}
//执行第三个
initVideo3(snapParam3)
},
error: function () {
layer.msg("过程2摄像头配置失败……");
//执行第三个
initVideo3(snapParam3);
}
});
} else {
initVideo3(snapParam3);
}
}
function initVideo3(snapParam3) {
if (!snapParam3) return;
$.ajax({
type: "POST",
url: "../../inout/api/inout-video-play",
dataType: "json",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(snapParam3),
success: function (result) {
if (result.code != "SUCCESS") {
layer.msg(result.msg);
} else {
initSnapVideo(result, 3);
}
},
error: function () {
layer.msg("过程3摄像头配置失败……");
}
});
}
/**
* 视频播放
* @param data
* @param order
*/
function initSnapVideo(data, order) {
var htm = "";
//海康web4.0播放
if (PlayType.HIK_WEB4 == data.playType) {
var url = "../../inout/api/iframe-hik?id=" + data.id;
if (ship && ship == "ship") { //船运称重页面
url += "&length=340&width=195";
} else { //称重页面
url += "&length=310&width=170";
}
htm = '';
}
//VLC播放
if (PlayType.VLC == data.playType) {
htm = "";
}
//web-rtc播放方式
if (PlayType.PLAY_TYPE_WEB_RTC_DH == data.playType || PlayType.PLAY_TYPE_WEB_RTC_HIK == data.playType) {
playUrl = data.playUrl;
playNum = order;
videoId = data.cameraId;
htm = '';
}
if (1 == order) {
$("#kccz-r-video1").append(htm);
}
if (2 == order) {
$("#kccz-r-video2").append(htm);
}
if (3 == order) {
$("#kccz-r-video3").append(htm);
}
if (PlayType.PLAY_TYPE_WEB_RTC_DH == data.playType || PlayType.PLAY_TYPE_WEB_RTC_HIK == data.playType) {
if (1 == order) {
webRtcToPlay1();
}
if (2 == order) {
webRtcToPlay2();
}
if (3 == order) {
webRtcToPlay3();
}
}
}
/*============= webRtc视频播放1 ----- 开始 ===============*/
/**
* 开始播放
* @param winTag 播放窗口
* @returns {Promise}
*/
async function webRtcToPlay1() {
if (playUrl) {
mediaStream1 = new MediaStream();
$("#video" + playNum)[0].srcObject = mediaStream1;
webrtc1 = new RTCPeerConnection({
iceServers: [{
urls: ["stun:stun.l.google.com:19302"]
}],
sdpSemantics: "unified-plan"
});
webrtc1.onsignalingstatechange = signalingstatechange1;
webrtc1.ontrack = ontrack1
let offer = await webrtc1.createOffer({
offerToReceiveAudio: true,
offerToReceiveVideo: true
});
await webrtc1.setLocalDescription(offer);
}
}
function ontrack1(event) {
mediaStream1.addTrack(event.track);
}
async function signalingstatechange1() {
switch (webrtc1.signalingState) {
case 'have-local-offer':
// let uuid = $('#uuid').val();
let url = playUrl + "?uuid=" + videoId + "&channel=0";
$.post(url, {
data: btoa(webrtc1.localDescription.sdp)
}, function (data) {
try {
console.log(data);
webrtc1.setRemoteDescription(new RTCSessionDescription({
type: 'answer',
sdp: atob(data)
}))
} catch (e) {
console.warn(e);
}
});
break;
case 'stable':
break;
case 'closed':
break;
default:
console.log(`unhandled signalingState is ${webrtc1.signalingState}`);
break;
}
}
/*============= 视频播放 ----- 结束 ===============*/
/*============= webRtc视频播放2 ----- 开始 ===============*/
/**
* 开始播放
* @param winTag 播放窗口
* @returns {Promise}
*/
async function webRtcToPlay2() {
if (playUrl) {
mediaStream2 = new MediaStream();
$("#video" + playNum)[0].srcObject = mediaStream2;
webrtc2 = new RTCPeerConnection({
iceServers: [{
urls: ["stun:stun.l.google.com:19302"]
}],
sdpSemantics: "unified-plan"
});
webrtc2.onsignalingstatechange = signalingstatechange2;
webrtc2.ontrack = ontrack2
let offer = await webrtc2.createOffer({
offerToReceiveAudio: true,
offerToReceiveVideo: true
});
await webrtc2.setLocalDescription(offer);
}
}
function ontrack2(event) {
mediaStream2.addTrack(event.track);
}
async function signalingstatechange2() {
switch (webrtc2.signalingState) {
case 'have-local-offer':
// let uuid = $('#uuid').val();
let url = playUrl + "?uuid=" + videoId + "&channel=0";
$.post(url, {
data: btoa(webrtc2.localDescription.sdp)
}, function (data) {
try {
console.log(data);
webrtc2.setRemoteDescription(new RTCSessionDescription({
type: 'answer',
sdp: atob(data)
}))
} catch (e) {
console.warn(e);
}
});
break;
case 'stable':
break;
case 'closed':
break;
default:
console.log(`unhandled signalingState is ${webrtc2.signalingState}`);
break;
}
}
/*============= 视频播放 ----- 结束 ===============*/
/*============= webRtc视频播放3 ----- 开始 ===============*/
/**
* 开始播放
* @param winTag 播放窗口
* @returns {Promise}
*/
async function webRtcToPlay3() {
if (playUrl) {
mediaStream3 = new MediaStream();
$("#video" + playNum)[0].srcObject = mediaStream3;
webrtc3 = new RTCPeerConnection({
iceServers: [{
urls: ["stun:stun.l.google.com:19302"]
}],
sdpSemantics: "unified-plan"
});
webrtc3.onsignalingstatechange = signalingstatechange3;
webrtc3.ontrack = ontrack3
let offer = await webrtc3.createOffer({
offerToReceiveAudio: true,
offerToReceiveVideo: true
});
await webrtc3.setLocalDescription(offer);
}
}
function ontrack3(event) {
mediaStream3.addTrack(event.track);
}
async function signalingstatechange3() {
switch (webrtc3.signalingState) {
case 'have-local-offer':
// let uuid = $('#uuid').val();
let url = playUrl + "?uuid=" + videoId + "&channel=0";
$.post(url, {
data: btoa(webrtc3.localDescription.sdp)
}, function (data) {
try {
console.log(data);
webrtc3.setRemoteDescription(new RTCSessionDescription({
type: 'answer',
sdp: atob(data)
}))
} catch (e) {
console.warn(e);
}
});
break;
case 'stable':
break;
case 'closed':
break;
default:
console.log(`unhandled signalingState is ${webrtc3.signalingState}`);
break;
}
}
/*============= 视频播放 ----- 结束 ===============*/