;!(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 = "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + " 00:00:00\n" + " 00:00:00\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "
"; element.innerHTML=_content; } //播放 - 针对摄像头id LiveComponent.prototype.playVideo = function (video_id, callback) { $.ajax({ type: "get", url: "../../webapi/media/live?param=" + video_id, timeout: 5000, async: false, success: function (result) { callback(result); } }); } //播放 - 针对 rtsp LiveComponent.prototype.playVideoRTSP = function (rtspUrl, callback) { $.ajax({ type: "get", url: "../../webapi/media/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: "../../webapi/media/stop?param=" + streamPath, async: false, success: function (result) { } }); } }; LiveComponent.prototype.close = function () { this.closeVideo(this.stream_path); }; window.LiveComponent = LiveComponent; })();