Monica视频监控处理程序
xc
2021-04-27 cdb957a6df222e8bc2ea8ce22e164d6588ab5255
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
;!(function () {
 
    function LiveComponent(opt) {
        if (typeof opt.elem === 'string') {
            opt.elem = document.getElementById(opt.elem);
        }
        if (!opt.elem) {
            throw new Error('需要容器');
            return;
        }
        this.elem = opt.elem;
        appendContent(this.elem);
 
        let stream_path;
        let cameraId = opt.cameraId;
        let rtspUrl = opt.rtspUrl;
        this.container = document.getElementById("container");
 
        let $play = document.getElementById('play');
        let $stop = document.getElementById('stop');
 
        let h5lc = new Jessibuca({container, decoder: "js/jessibuca/ff.js", videoBuffer: 0});
 
        //rtspURL不为空 走rtsp rtspURL为空 走平台摄像头id
        if (opt.rtspUrl){
            let rtspUrl = opt.rtspUrl;
            this.playVideoRTSP(rtspUrl, function (result) {
                h5lc.onLoad = function () {
                    let jessicaURL = result.jessicaURL;
                    this.play(jessicaURL);
                }
                stream_path = result.streamPath;
                $play.style.display = 'none';
                $stop.style.display = 'inline';
            });
        }else {
            this.playVideo(cameraId, function (result) {
                h5lc.onLoad = function () {
                    let jessicaURL = result.jessicaURL;
                    this.play(jessicaURL);
                }
                stream_path = result.streamPath;
                $play.style.display = 'none';
                $stop.style.display = 'inline';
            });
        }
 
        this.stream_path = stream_path;
 
        let $close = document.getElementById('close');
        let than = this;
        //关闭
        $close.addEventListener('click', function () {
            h5lc.destroy();
            than.closeVideo(stream_path)
            than.elem.style.display = 'none';
        }, false);
 
        //全屏
        let $expand = document.getElementById('expand');
        $expand.addEventListener('click', function () {
            h5lc.fullscreen=true
        }, false);
 
    }
 
 
 
    function appendContent(element) {
        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" +
            "            </div>\n" +
            "            <div class=\"control\">\n" +
            "                <div class=\"fa fa-play\" id=\"play\"></div>\n" +
            "                <div class=\"fa fa-stop\" id=\"stop\" style=\"display: none\"></div>\n" +
            "                <div class=\"timer\">\n" +
            "                    <span class=\"progress_timer\">00:00:00</span>\n" +
            "                    <span class=\"duration_timer\">00:00:00</span>\n" +
            "                </div>\n" +
            "                <div class=\"fa fa-expand expand\" id=\"expand\"></div>\n" +
            "                <div class=\"fa fa-close\" id=\"close\"></div>\n" +
            "            </div>\n" +
            "        </div>\n" +
            "    </div>";
        element.innerHTML=_content;
    }
 
    //播放 - 针对摄像头id
    LiveComponent.prototype.playVideo = function (video_id, callback) {
        $.ajax({
            type: "get",
            url: "../../monica/live?param=" + video_id,
            timeout: 5000,
            async: false,
            success: function (result) {
                callback(result);
            }
        });
    }
    //播放 - 针对 rtsp
    LiveComponent.prototype.playVideoRTSP = function (rtspUrl, callback) {
        $.ajax({
            type: "get",
            url: "../../monica/rtsp/live?param=" + rtspUrl,
            timeout: 5000,
            async: false,
            success: function (result) {
                callback(result);
            }
        });
    }
 
    //关闭
    LiveComponent.prototype.closeVideo = function (streamPath) {
        if (streamPath && typeof streamPath === "string") {
            $.ajax({
                type: "get",
                url: "../../monica/stop?param=" + streamPath,
                async: false,
                success: function (result) {
                }
            });
        }
    };
 
    LiveComponent.prototype.close = function () {
        this.closeVideo(this.stream_path);
    };
    window.LiveComponent = LiveComponent;
})();