From 4f602f9650287d7bcf9e8c28d9a0a3d4a4e5199a Mon Sep 17 00:00:00 2001
From: xc <double72cheng@gmail.com>
Date: Tue, 27 Apr 2021 10:31:35 +0800
Subject: [PATCH] 历史监控

---
 src/main/resources/public/monitor/history.html                    |   20 +----
 src/main/resources/public/js/history/historypler.js               |  164 ++++++++++++++++++----------------------
 src/main/java/com/hbbh/adapter/controller/MonibucaController.java |   20 +++++
 3 files changed, 99 insertions(+), 105 deletions(-)

diff --git a/src/main/java/com/hbbh/adapter/controller/MonibucaController.java b/src/main/java/com/hbbh/adapter/controller/MonibucaController.java
index 66b3535..20a1502 100644
--- a/src/main/java/com/hbbh/adapter/controller/MonibucaController.java
+++ b/src/main/java/com/hbbh/adapter/controller/MonibucaController.java
@@ -71,6 +71,26 @@
         return monicaResult;
     }
 
+    @RequestMapping(value = "/history", method = RequestMethod.GET)
+    @ApiOperation("history")
+    public MonicaResult History(@RequestParam("param")String param,@RequestParam("startTime")String startTime) {
+        MonicaResult monicaResult = new MonicaResult();
+        try {
+            monicaResult.setSourceURL("rtsp:////");
+            monicaResult.setHlsURL("");
+            monicaResult.setFlvURL("");
+            monicaResult.setJessicaURL("ws://172.16.30.113:8082/live/ff80808178af424e0178af44e677000343616d657261.flv");
+            monicaResult.setWebrtcURL("");
+            monicaResult.setStreamPath("live/ff80808178af424e0178af44e677000343616d657261");
+
+            return monicaResult;
+        } catch (Exception e) {
+            log.error("接口:com.hbbh.adapter.controller.api.MonibucaAPIController.parseVideoRTSP 调用失败");
+            e.printStackTrace();
+        }
+        return monicaResult;
+    }
+
     @RequestMapping(value = "/stop", method = RequestMethod.GET)
     @ApiOperation("stop")
     public String stop(@RequestParam("param")String param) {
diff --git a/src/main/resources/public/js/history/historypler.js b/src/main/resources/public/js/history/historypler.js
index 7b39a25..5c88ae1 100755
--- a/src/main/resources/public/js/history/historypler.js
+++ b/src/main/resources/public/js/history/historypler.js
@@ -1,122 +1,108 @@
 ;!(function () {
-    let _content = $("" +
-        "<div class=\"player-wrapper\" id=\"container\"></div>\n" +
-        "<div id=\"progressTime\"></div>");
-    $("#jessibucaContainerHistory").append(_content);
-
-    var stream_path;
-
-    var hourTimestamp = 3600 * 1000;
-    var dayTimestamp = hourTimestamp * 24;
-    var currentTimer;
-
-    let decoder = queryParam('decoder') || 'ff';
 
 
-    var container = document.getElementById("container");
-    var h5lc;
-    var ffurl;
-    var elem;
 
     function Historypler(opt) {
-        if (typeof option.elem === 'string') {
+        if (typeof opt.elem === 'string') {
             opt.elem = document.getElementById(opt.elem);
         }
-        if (!option.elem) {
+        if (!opt.elem) {
             throw new Error('需要容器');
             return;
         }
-        elem = opt.elem;
-        ffurl = opt.ffurl;
-    }
+        this.elem = opt.elem;
+        appendContent(this.elem);
 
-    $("#progressTime").ProgressTime({
-        container: "progressTime",
-        startTime: new Date(formatDate(new Date(new Date().getTime() - dayTimestamp * 3), "YYYY/MM/DD 00:00:00")),
-        endTime: new Date(formatDate(new Date(), "YYYY/MM/DD 00:00:00")),
-        currentTime: new Date(formatDate(new Date(new Date().getTime() - dayTimestamp * 2), "YYYY/MM/DD 12:00:00")),
-        interval: 300,
-        delay: 2000,
-        isNow: false, // 是否显示右侧回到当前时间
-        toPlay: false, // 渲染是否完成
-        animateFinish: false, // 动画是否完成
-        callback: function (config) {
-            console.log(config);
-            currentTimer = config.time;
-        },
-        animateCallback: function (config) {
+        let stream_path;
+        let ffurl = opt.ffurl;
+        let code = opt.code;
+        let container = document.getElementById("container");
 
-            // 假如动画完成之后请求数据需要两秒
-            var timer = setTimeout(function () {
-                progressTime.options.toPlay = false; // 两秒之后再继续走播放条
-                clearTimeout(timer);
-            }, 0);
-        }
-    });
+        let h5lc = new Jessibuca({container, decoder: ffurl, videoBuffer: 0});
 
+        let hourTimestamp = 3600 * 1000;
+        let dayTimestamp = hourTimestamp * 24;
+        let currentTimer;
 
-    Historypler.prototype.playVideo = function (video_id, starttime) {
-        $.ajax({
-            type: "get",
-            url: "../../webapi/media/live?param=" + video_id + "&startTime=" + starttime,
-            timeout: 5000,
-            async: false,
-            success: function (result) {
-                stream_path = result.streamPath;
-                $play.style.display = 'none';
-                $stop.style.display = 'inline';
+        //时间轴
+        $("#progressTime").ProgressTime({
+            container: "progressTime",
+            startTime: new Date(formatDate(new Date(new Date().getTime() - dayTimestamp * 3), "YYYY/MM/DD 00:00:00")),
+            endTime: new Date(formatDate(new Date(), "YYYY/MM/DD 00:00:00")),
+            currentTime: new Date(formatDate(new Date(new Date().getTime() - dayTimestamp * 2), "YYYY/MM/DD 12:00:00")),
+            interval: 300,
+            delay: 2000,
+            isNow: false, // 是否显示右侧回到当前时间
+            toPlay: false, // 渲染是否完成
+            animateFinish: false, // 动画是否完成
+            callback: function (config) {
+                console.log(config);
+                currentTimer = config.time;
+            },
+            animateCallback: function (config) {
+                // 假如动画完成之后请求数据需要两秒
+                var timer = setTimeout(function () {
+                    progressTime.options.toPlay = false; // 两秒之后再继续走播放条
+                    clearTimeout(timer);
+                }, 0);
+            }
+        });
+
+        //播放
+        $(".progressTime-left-b-start").on("click", function () {
+            historypler.playVideo(code,currentTimer,function (result) {
                 h5lc.onLoad = function () {
-                    h5lc = new Jessibuca({container, decoder: ffurl, videoBuffer: 1000});
-                    this.play()
                     this.play(result.jessicaURL);
                 }
-            }
+            });
+        });
+
+        let than = this;
+        //暂停(关闭流)
+        $(".progressTime-left-b-start stop").on("click", function () {
+            $(this).removeClass("stop");
+            h5lc.destroy();
+            than.closeVideo(stream_path)
+            than.elem.style.display = 'none';
         });
 
     }
 
+    //文本添加
+    function appendContent(element) {
+        let _content = "<div class=\"player-wrapper\" id=\"container\"></div>\n" +
+            "<div id=\"progressTime\"></div>";
+        element.innerHTML = _content;
+    }
+
+    //播放
+    Historypler.prototype.playVideo = function (video_id,starttime, callback) {
+        $.ajax({
+            type: "get",
+            //url: "../../webapi/media/live?param=" + video_id,
+            url: "../../monica/history?param=" + video_id+ "&startTime=" + starttime,
+            timeout: 5000,
+            async: false,
+            success: function (result) {
+                callback(result);
+            }
+        });
+    };
+
+
     Historypler.prototype.closeVideo = function (streamPath) {
-        this.h5lc.destroy();
-        if (streamPath && typeof streamPath === "String") {
+        if (streamPath && typeof streamPath === "string") {
             $.ajax({
                 type: "get",
-                url: "../../webapi/media/stop?param=" + streamPath,
+                //url: "../../webapi/media/stop?param=" + streamPath,
+                url: "../../monica/stop?param=" + streamPath,
                 async: false,
                 success: function (result) {
-                    this.elem.style.display = 'none';
                 }
             });
         }
-    }
+    };
 
-
-    function queryParam(name, url) {
-        var search = window.location.search;
-        var qArr = '';
-        var key = {};
-        if (url) {
-            qArr = url.split("?")[1].split("&")
-        } else {
-            if (!window.location.search) {
-                return
-            }
-            qArr = search.substr(1).split("&")
-        }
-        for (var i = 0; i < qArr.length; i++) {
-
-            var firstPos = qArr[i].indexOf('=');
-            key[qArr[i].slice(0, firstPos)] = qArr[i].slice(firstPos + 1)
-        }
-        if (name) {
-            return key[name]
-        } else {
-            if (url) {
-                return key[name]
-            } else {
-                return key
-            }
-        }
-    }
 
     window.Historypler = Historypler;
 
diff --git a/src/main/resources/public/monitor/history.html b/src/main/resources/public/monitor/history.html
index 8a01e2c..4924882 100755
--- a/src/main/resources/public/monitor/history.html
+++ b/src/main/resources/public/monitor/history.html
@@ -12,34 +12,22 @@
 </head>
 
 <body>
-
+<!-- jessiebuca播放器 录像 -->
 <div id="jessibucaContainerHistory"></div>
 
 
-<script src="../js/renderer.js"></script>
 <script src="../js/jquery.min.js"></script>
+<script src="../js/ajax.js"></script>
+<script src="../js/renderer.js"></script>
 <script src="../js/jquery.progressTime.js"></script>
 <script src="../js/history/historypler.js"></script>
 
 
 <script>
-    window.onkeydown = function () {
-        h5lc.fullscreen = false
-    };
-
     let historypler =new Historypler({
         elem:"jessibucaContainerHistory",
         ffurl:"../js/jessibuca/ff.js",
-    });
-
-    //播放
-    $(".progressTime-left-b-start").on("click", function () {
-        //TODO:historypler.playVideo();
-    });
-    //暂停 关闭流
-    $(".progressTime-left-b-start stop").on("click", function () {
-        $(this).removeClass("stop");
-        //TODO:historypler.closeVideo()
+        code:"ff80808178af424e0178af44e677000343616d657261",
     });
 </script>
 

--
Gitblit v1.9.1