Monica视频监控处理程序
xc
2021-04-20 504e27bd5a95b2740fc82679bef6f605eaa148d6
src/main/resources/public/index3.html
@@ -5,43 +5,12 @@
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Jessibuca 1.0</title>
    <meta charset="utf-8"/>
    <link rel="stylesheet" href="css/font-awesome.min.css">
    <link rel="stylesheet" href="css/controles.css">
    <link rel="stylesheet" href="css/progressTime.css">
    <style>
        .btn {
            display: inline-block;
            line-height: 1;
            white-space: nowrap;
            cursor: pointer;
            -webkit-appearance: none;
            text-align: center;
            box-sizing: border-box;
            outline: none;
            margin: 0;
            transition: .1s;
            font-weight: 500;
            -moz-user-select: none;
            -webkit-user-select: none;
            -ms-user-select: none;
            padding: 12px 20px;
            font-size: 14px;
            border-radius: 4px;
            color: #fff;
            background-color: #409eff;
            border-color: #409eff;
            width: 100%;
        }
        .btn-danger {
            color: #fff;
            background-color: #f56c6c;
            border-color: #f56c6c;
        }
        .btn-success {
            color: #fff;
            background-color: #67c23a;
            border-color: #67c23a;
        }
        .player-wrapper {
            width: 900px;
            height: 500px;
@@ -50,65 +19,72 @@
            text-align: center;
        }
        .btn-wrapper {
            width: 900px;
            height: 50px;
            margin: 0 auto;
            margin-top: 10px;
        }
        /*        .player-wrapper canvas {
                    width: 100%;
                    height: 100%;
                }*/
        /*.player-wrapper canvas {
            width: 100%;
            height: 100%;
        }*/
        .logs {
            border: 1px solid #333;
            width: 900px;
            height: 300px;
            margin: 0 auto;
            overflow-y: auto;
            padding: 5px;
        }
    </style>
</head>
<body>
<div class="player-wrapper" id="container" style="background-color: #0D0E1B;width:900px;height:500px">
</div>
<div class="btn-wrapper" id="playDom">
    <button class="btn" id="play">播放</button>
</div>
<div class="btn-wrapper btn-wrapper2" id="stopDom" style="display: none">
    <div style="margin-top: 5px">
        <button class="btn btn-danger" id="stop">结束</button>
<!-- jessiebuca播放器 -->
<div class="wrap">
    <div class="content">
        <div class="player" onmouseover="playerShow()" onmouseout="playerHidden()">
            <div class="player-wrapper" id="container" style="background-color: #0D0E1B;">
            </div>
            <div class="control">
                <div class="fa fa-play" id="play">
                </div>
                <div class="fa fa-stop" id="stop" style="display: none">
                </div>
                <div>
                    <span class="progress"></span>
                </div>
                <div class="timer">
                    <span class="progress_timer">00:00:00</span>/
                    <span class="duration_timer">00:00:00</span>
                </div>
                <div class="fa fa-expand expand" onclick="h5lc.fullscreen=true"></div>
            </div>
        </div>
    </div>
</div>
<button class="btn" onclick="h5lc.fullscreen=true">全屏</button>
<div id="logout" class="logs">
</div>
<script src="./ajax.js"></script>
<script src="./renderer.js"></script>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<div id="progressTime"></div>
<script src="./js/ajax.js"></script>
<script src="./js/renderer.js"></script>
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/jquery.progressTime.js"></script>
<script>
    onerror = handleErr;
    var txt = "";
    var hourTimestamp = 3600 * 1000;
    var dayTimestamp = hourTimestamp * 24;
    var currentTimer;
    window.onkeydown = function () {
        h5lc.fullscreen = false
    }
    var $play = document.getElementById('play');
    var $stop = document.getElementById('stop');
    var $playDom = document.getElementById('playDom');
    var $stopDom = document.getElementById('stopDom');
    var container = document.getElementById("container");
    var $progressTime = document.getElementById('progressTime');
    var isPlaying = false;
    disabledMouseWheel(container);
    let stream = queryParam('stream') || 'user1';
    let decoder = queryParam('decoder') || 'ff';
    let source = queryParam('source') || 'localhost';
    var h5lc = new Jessibuca({container, decoder: decoder + ".js", videoBuffer: 0});
    h5lc.onLoad = function () {
        //this.play("wss://pulls.1234326.cn/live/L01.flv")
@@ -119,72 +95,45 @@
    }
    h5lc.onPlay = function () {
        isPlaying = true;
        $playDom.style.display = 'none';
        $stopDom.style.display = 'block';
        $play.style.display = 'none';
        $stop.style.display = 'inline';
    }
    $play.addEventListener('click', function () {
        if (isPlaying) {
            return;
        }
        isPlaying = true;
/*        $.get("http://127.0.0.1:8088/monica/test/video", function (data) {
                h5lc.play(data)
            }
        );*/
        /*        $.get("http://127.0.0.1:8088/monica/test/video", function (data) {
                        h5lc.play(data)
                    }
                );*/
        play();
        $playDom.style.display = 'none';
        $stopDom.style.display = 'block';
        $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);
    function play(firstResponseIp) {
        h5lc.play("ws://172.16.30.113:8082/live/video4.flv")
    }
    function stop() {
        $.get("http://127.0.0.1:8088/monica/video/stop?param=live/test", function () {
                alert("视频流已关闭");
                h5lc.close()
            }
        );
        //stop();
        $playDom.style.display = 'block';
        $stopDom.style.display = 'none';
    }, false);
    function play(firstResponseIp) {
        //h5lc.play("ws://" + (firstResponseIp || source) + ":8080/live/" + stream)
        //h5lc.play("ws://pull2.afb1188.com/live/" + stream + ".flv")
        //h5lc.play("ws://localhost:8080/live/" + stream)
        h5lc.play("ws://172.16.30.113:8082/live/video3.flv")
        //h5lc.play("ws://localhost:8072/live/test.flv")
        // h5lc.play("ws://119.9.118.39:8080/live/user1", canvas)
        // h5lc.play("ws://test.qihaipi.com/gnddragon/test.flv", canvas)
        //  h5lc.play("ws://localhost:8080/live/test.flv", canvas)
    }
    function getFastCdnFromList(ipList) {
        ipList = ipList || [];
        var firstResponseIp = '';
        for (var i = 0, len = ipList.length; i < len; i++) {
            var tempIp = ipList[i].name;
            var reqHref = 'http://' + tempIp + '/test';
            var request = _ajax.get(reqHref);
            request.then(function (data) {
                if (!firstResponseIp) {
                    firstResponseIp = tempIp;
                    // 直接可以播放了。
                    play(firstResponseIp);
                }
            })
        }
    }
    function stop() {
        h5lc.close()
    }
@@ -220,35 +169,58 @@
        }
    }
    function disabledMouseWheel(ele) {
        if (ele.addEventListener) {
            ele.addEventListener('DOMMouseScroll', scrollFunc, false);
        } //W3C
        ele.onmousewheel = scrollFunc; //IE/Opera/Chrome
    function playerShow() {
        $(".player .control").css("display", "block")
    }
    function scrollFunc(evt) {
        evt = evt || window.event;
        if (evt.preventDefault) {
            // Firefox
            evt.preventDefault();
            evt.stopPropagation();
        } else {
            // IE
            evt.cancelBubble = true;
            evt.returnValue = false;
    function playerHidden() {
        $(".player .control").css("display", "none")
    }
    $("#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 = true; // 两秒之后再继续走播放条
                clearTimeout(timer);
            }, 0);
        }
        return false;
    }
    });
    $(".progressTime-left-b-start").on("click", function () {
        if (currentTimer) {
            $(this).addClass("stop");
    function handleErr(msg, url, l) {
        txt = "There was an error on this page.\n\n";
        txt += "Error: " + msg + "\n";
        txt += "URL: " + url + "\n";
        txt += "Line: " + l + "\n\n";
        document.getElementById("logout").innerHTML += txt + "<br>";
        return true;
    }
            $.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");
    });
</script>
</body>