From 1c9890402c19d0c8e99d68766f3172df20373c42 Mon Sep 17 00:00:00 2001
From: xc <double72cheng@gmail.com>
Date: Mon, 26 Apr 2021 15:11:09 +0800
Subject: [PATCH] 插件化

---
 src/main/resources/public/js/live/livepler.js       |   61 +--------
 src/main/resources/public/monitor/history.html      |  135 ++-------------------
 src/main/resources/public/js/history/historypler.js |  124 ++++++++++++++++++++
 src/main/resources/public/monitor/live.html         |   18 +-
 4 files changed, 158 insertions(+), 180 deletions(-)

diff --git a/src/main/resources/public/js/history/historypler.js b/src/main/resources/public/js/history/historypler.js
new file mode 100755
index 0000000..7b39a25
--- /dev/null
+++ b/src/main/resources/public/js/history/historypler.js
@@ -0,0 +1,124 @@
+;!(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') {
+            opt.elem = document.getElementById(opt.elem);
+        }
+        if (!option.elem) {
+            throw new Error('需要容器');
+            return;
+        }
+        elem = opt.elem;
+        ffurl = opt.ffurl;
+    }
+
+    $("#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);
+        }
+    });
+
+
+    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';
+                h5lc.onLoad = function () {
+                    h5lc = new Jessibuca({container, decoder: ffurl, videoBuffer: 1000});
+                    this.play()
+                    this.play(result.jessicaURL);
+                }
+            }
+        });
+
+    }
+
+    Historypler.prototype.closeVideo = function (streamPath) {
+        this.h5lc.destroy();
+        if (streamPath && typeof streamPath === "String") {
+            $.ajax({
+                type: "get",
+                url: "../../webapi/media/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/js/live/livepler.js b/src/main/resources/public/js/live/livepler.js
index 2e9cd64..9c00ba3 100755
--- a/src/main/resources/public/js/live/livepler.js
+++ b/src/main/resources/public/js/live/livepler.js
@@ -1,6 +1,5 @@
 ;!(function () {
 
-
     let _content = $("<div class=\"content\">\n" +
         "        <div class=\"player\" onmouseover=\"$('.player .control').css('display', 'block')\" onmouseout=\"$('.player .control').css('display', 'none')\">\n" +
         "            <div class=\"player-wrapper\" id=\"container\" style=\"background-color: #0D0E1B;\">\n" +
@@ -20,7 +19,6 @@
     $("#jessibucaContainer").append(_content);
 
 
-    var video_id;
     var stream_path;
 
     var $play = document.getElementById('play');
@@ -32,7 +30,6 @@
     var elem;
 
     function Livepler(opt) {
-
         opt.elem = document.getElementById(opt.elem);
 /*
         if (typeof option.elem === 'string') {
@@ -45,79 +42,39 @@
         ffurl = opt.ffurl;
     }
 
-
-    /**
-     * 播放
-     * @param video_id
-     * @param url
-     * @param c
-     */
-    Livepler.prototype.playVideo = function (video_id, url, c) {
-        h5lc = new Jessibuca({container, decoder: ffurl, videoBuffer: 1000});
-        h5lc.fullscreen = false
-        h5lc.onLoad = function () {
-            this.play("ws://172.16.30.113:8082/live/ff80808178af424e0178af44e677000343616d657261.flv")
-        }
-/*        $.ajax({
+    Livepler.prototype.playVideo = function (video_id) {
+        $.ajax({
             type: "get",
-            url: url + "?param=" + video_id,
+            url: "../../webapi/media/live?param=" + video_id,
             timeout: 5000,
             async: false,
             success: function (result) {
                 stream_path=result.streamPath;
-                c(result);
                 $play.style.display = 'none';
                 $stop.style.display = 'inline';
+
+                h5lc = new Jessibuca({container, decoder: ffurl, videoBuffer: 1000});
                 h5lc.onLoad = function () {
-                    //this.play(result.jessicaURL);
-                    this.play("ws://172.16.30.113:8082/live/ff80808178af424e0178af44e677000343616d657261.flv")
+                    this.play(result.jessicaURL);
                 }
             }
-        });*/
+        });
     }
 
-    /**
-     * 播放
-     * @param video_id
-     * @param url
-     * @param c
-     */
-    Livepler.prototype.closeVideo = function (streamPath, url, c) {
+    Livepler.prototype.closeVideo = function (streamPath) {
         this.h5lc.destroy();
         if (streamPath && typeof streamPath === "String") {
             $.ajax({
                 type: "get",
-                url: url + "?param=" + stream_path,
+                url: "../../webapi/media/stop?param=" + streamPath,
                 async: false,
                 success: function (result) {
-                    c(result);
-
-
                     this.elem.style.display = 'none';
                 }
             });
         }
     }
 
-
-    $play.addEventListener('click', function () {
-        isPlaying = true;
-        h5lc.play("ws://172.16.30.113:8082/live/ff80808178af424e0178af44e677000343616d657261.flv")
-        $play.style.display = 'none';
-        $stop.style.display = 'inline';
-    }, false);
-
-    $stop.addEventListener('click', function () {
-        if (!isPlaying) {
-            return;
-        }
-        isPlaying = false;
-        //stop();
-        $play.style.display = 'inline';
-        $stop.style.display = 'none';
-    }, false);
-
     window.Livepler = Livepler;
-
 })()
 
diff --git a/src/main/resources/public/monitor/history.html b/src/main/resources/public/monitor/history.html
index 1d8168d..8a01e2c 100755
--- a/src/main/resources/public/monitor/history.html
+++ b/src/main/resources/public/monitor/history.html
@@ -13,137 +13,34 @@
 
 <body>
 
-<div id="jessibucaContainerHistory">
-    <!-- 播放器 -->
-    <div class="player-wrapper" id="container"></div>
-    <!-- 时间轴 -->
-    <div id="progressTime"></div>
-</div>
+<div id="jessibucaContainerHistory"></div>
 
 
 <script src="../js/renderer.js"></script>
 <script src="../js/jquery.min.js"></script>
 <script src="../js/jquery.progressTime.js"></script>
+<script src="../js/history/historypler.js"></script>
 
 
 <script>
-    var video_id;
-    var stream_path;
+    window.onkeydown = function () {
+        h5lc.fullscreen = false
+    };
 
-    var hourTimestamp = 3600 * 1000;
-    var dayTimestamp = hourTimestamp * 24;
-    var currentTimer;
-
-    var container = document.getElementById("container");
-    let decoder = queryParam('decoder') || 'ff';
-
-    var h5lc = new Jessibuca({container, decoder: "../js/jessibuca/ff.js", videoBuffer: 0});
-
-
-    $("#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);
-        }
+    let historypler =new Historypler({
+        elem:"jessibucaContainerHistory",
+        ffurl:"../js/jessibuca/ff.js",
     });
-    $(".progressTime-left-b-start").on("click", function () {
-        h5lc.play("ws://172.16.30.113:8082/live/ff80808178af424e0178af44e677000343616d657261.flv")
-        /*        if (currentTimer) {
-                    $(this).addClass("stop");
-                    $.ajax({
-                        url: "" + "?param=",
-                        async: false,//同步方式发送请求,true为异步发送
-                        type: "GET",
-                        data: {},
-                        success: function (result) {
-                            alert(result);
-                        }
-                    });
-                }*/
-    });
-    $(".progressTime-left-b-start stop").on("click", function () {
-        $(this).removeClass("stop");
-    });
-
-
-    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
-            }
-        }
-    }
 
     //播放
-    function play_video(video_id) {
-        window.video_id = video_id;
-        window.stream_path = "";
-        $.ajax({
-            type: "get",
-            url: "../../webapi/media/historical?param=" + video_url+"&startTime="+currentTimer,
-            timeout: 5000,
-            async: false,
-            success: function (result) {
-                h5lc.onLoad = function () {
-                    this.play(result.jessica);
-                }
-                window.streamPath = result.streamPath;
-            }
-        });
-    }
-
-    //关闭
-    function close_video(streamPath) {
-        h5lc.destroy();
-        if (streamPath) {
-            $.ajax({
-                type: "get",
-                url: "../../webapi/media/stop?param=" + streamPath,
-                async: false,
-                success: function (result) {
-                }
-            });
-        }
-    }
-
+    $(".progressTime-left-b-start").on("click", function () {
+        //TODO:historypler.playVideo();
+    });
+    //暂停 关闭流
+    $(".progressTime-left-b-start stop").on("click", function () {
+        $(this).removeClass("stop");
+        //TODO:historypler.closeVideo()
+    });
 </script>
 
 </body>
diff --git a/src/main/resources/public/monitor/live.html b/src/main/resources/public/monitor/live.html
index 57fc911..a9988d0 100755
--- a/src/main/resources/public/monitor/live.html
+++ b/src/main/resources/public/monitor/live.html
@@ -24,24 +24,24 @@
 
 
 <script>
-    var $close = document.getElementById('close');
+    window.onkeydown = function () {
+        h5lc.fullscreen = false
+    };
+
+    var $jessibucaContainer = document.getElementById('jessibucaContainer');
 
     let livepler =new Livepler({
         elem:"jessibucaContainer",
         ffurl:"../js/jessibuca/ff.js",
-    })
+    });
     //播放
     //livepler.playVideo()
     window.onload=function() {
-        livepler.playVideo();
-    }
+        //TODO:livepler.playVideo();
+    };
     //关闭
     $close.addEventListener('click', function () {
-        if (!isPlaying) {
-            return;
-        }
-        isPlaying = false;
-        //livepler.closeVideo()
+        //TODO:livepler.closeVideo()
         $jessibucaContainer.style.display = 'none';
     }, false);
 

--
Gitblit v1.9.1