Monica视频监控处理程序
xc
2021-04-29 5570ea0e7febed5c5929b5fcde2d95ec80dad661
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
132
133
134
135
136
137
138
139
;!(function () {
 
    function HistoryComponent(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 container = document.getElementById("container");
 
        let h5lc = new Jessibuca({container, decoder: "js/jessibuca/ff.js", videoBuffer: 0});
 
        let hourTimestamp = 3600 * 1000;
        let dayTimestamp = hourTimestamp * 24;
        let currentTimer;
 
        //时间轴
        $("#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 () {
            if (opt.rtspUrl){
                let rtspUrl = opt.rtspUrl;
                historyComponent.playVideoRTSP(rtspUrl,currentTimer,function (result) {
                    h5lc.play(result.jessicaURL)
                });
            }else {
                historyComponent.playVideo(cameraId,currentTimer,function (result) {
                    h5lc.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;
    }
 
    //播放 - 针对摄像头id
    HistoryComponent.prototype.playVideo = function (video_id,starttime, callback) {
        $.ajax({
            type: "get",
            url: "../../monica/history?param=" + video_id+ "&startTime=" + starttime+"&endTime=",
            timeout: 5000,
            async: false,
            success: function (result) {
                callback(result);
            }
        });
    };
    //播放 - 针对rtsp
    HistoryComponent.prototype.playVideoRTSP = function (rtspURL,starttime, callback) {
        $.ajax({
            type: "get",
            url: "../../monica/rtsp/history?param=" + rtspURL+ "&startTime=" + starttime+"&endTime=",
            timeout: 5000,
            async: false,
            success: function (result) {
                callback(result);
            }
        });
    };
 
    //关闭流
    HistoryComponent.prototype.closeVideo = function (streamPath) {
        if (streamPath && typeof streamPath === "string") {
            $.ajax({
                type: "get",
                url: "../../monica/stop?param=" + streamPath,
                async: false,
                success: function (result) {
                }
            });
        }
    };
 
    HistoryComponent.prototype.close = function () {
        this.closeVideo(this.stream_path);
    };
 
 
    //精确时间选择器
    jeDate("#currentTimer",{
        festival:false,                     //是否显示农历节日
        minDate:"1900-01-01",              //最小日期
        maxDate:"2099-12-31",              //最大日期
        method:{
            choose:function (params) {
 
            }
        },
        format: "YYYY-MM-DD hh:mm:ss"
    });
 
    window.HistoryComponent = HistoryComponent;
 
})()