From 46adcbf7494340a495539708210bb39110bdc33b Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期六, 29 十一月 2025 17:35:03 +0800
Subject: [PATCH] 快速登记、化验及称重作业页面提交1

---
 fzzy-igdss-web/src/main/resources/static/inout/video-play.js |  346 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 346 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-web/src/main/resources/static/inout/video-play.js b/fzzy-igdss-web/src/main/resources/static/inout/video-play.js
new file mode 100644
index 0000000..3a37c09
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/static/inout/video-play.js
@@ -0,0 +1,346 @@
+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 = '<iframe src=' + url + ' style="width: 100%;height: 100%"></iframe>';
+    }
+    //VLC鎾斁
+    if (PlayType.VLC == data.playType) {
+        htm = "<object type='application/x-vlc-plugin' "
+            + "events='true' width='100%' height='100%'"
+            + "pluginspage='http://www.videolan.org'"
+            + "th:codebase='@{../../static/plugins/vlc/npapi-vlc-2.2.2.tar.xz}'>\n"
+            + "<param name='mrl' value='" + data.playUrl + "'/>\n"
+            + "<param name='volume' value='50'/>\n"
+            + "<param name='autoplay' value='true'/>\n"
+            + "<param name='loop' value='false'/>\n"
+            + "<param name='fullscreen' value='true'/>\n"
+            + "<param name='toolbar' value='false'/>\n" + "</object>";
+    }
+    //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 = '<video class="video" id="video' + playNum + '" autoplay="" muted="" playsinline=""></video>';
+    }
+
+    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<void>}
+ */
+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<void>}
+ */
+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<void>}
+ */
+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;
+    }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/

--
Gitblit v1.9.3