123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- import WebSocketServer from './websocketServer.js';
- import {BlankROIDrawer, ROIDrawer, StandingDrawer, SpeedLine} from './ROIDrawer.js';
- let ROIdrawer = null;
- class Player {
- constructor(option) {
- this.ws = null;
- this.options = option;
- this.events = {
- error: ()=>{}
- };
- this.ROI = {
- ROIDrawer,
- }
- }
- init() {
- //console.log('init');
- ROIdrawer = new ROIDrawer(this.options.drawer);
- this.options.ROI = ROIdrawer;
- this.ws = new WebSocketServer(this.options);
- this.ws.init();
- }
- connect() {
- for(let i in this.events) {
- this.ws.setCallBack(i, this.events[i]);
- }
- this.ws.connect();
- }
- play() {
- //console.log('player')
- }
- pause() {
- //console.log('pause')
- }
- close() {
- this.ws.close();
- ROIdrawer.terminate();
- //console.log('close1')
- }
- /**
- * 绘制额外信息
- * @param obj
- */
- updateInfo(obj) {
- this.ws.updateInfo(obj);
- }
- changeROIType(type) {
- ROIdrawer && ROIdrawer.terminate();
- switch (type) {
- case 'Polygon1':
- ROIdrawer = new ROIDrawer(this.options.drawer);
- ROIdrawer.setPolygonNum(1);
- ROIdrawer.cover(this.options.video);
- ROIdrawer.setROIFinishedCallback(this.events['ROIFinished']);
- break;
- case 'Polygon2':
- ROIdrawer = new ROIDrawer(this.options.drawer);
- ROIdrawer.setPolygonNum(2);
- ROIdrawer.cover(this.options.video);
- ROIdrawer.setROIFinishedCallback(this.events['ROIFinished']);
- break;
- case 'Polygon1Line1':
- ROIdrawer = new StandingDrawer(this.options.drawer);
- ROIdrawer.cover(this.options.video);
- ROIdrawer.setROIFinishedCallback(this.events['ROIFinished']);
- break;
- case 'Line2':
- ROIdrawer = new SpeedLine(this.options.drawer);
- ROIdrawer.setLineNum(2);
- ROIdrawer.cover(this.options.video);
- ROIdrawer.setROIFinishedCallback(this.events['ROIFinished']);
- break;
- default:
- ROIdrawer = new BlankROIDrawer(this.options.drawer);
- break;
- }
- this.ws.setROIDrawer(ROIdrawer);
- }
- setROI(data) {
- ROIdrawer && ROIdrawer.setROI(data);
- }
- resetROI() {
- ROIdrawer && ROIdrawer.reset();
- }
- getROIData() {
- if(ROIdrawer) {
- return ROIdrawer.getROIData();
- }
- return null;
- }
- setPolygonNum(num) {
- ROIdrawer && ROIdrawer.setPolygonNum(num);
- }
- /**
- * 自定义事件
- * 目前支持如下事件
- * [error] websocket连接失败
- * [noStream] 收不到码流
- * [canplay] 视频能够播放时触发
- * [initialCompleted] 视频初始化完成, 首次canplay
- * [ROIFinished] 手动绘制ROI完成时触发
- *
- * @param event 事件名
- * @param callback 事件响应函数
- */
- on(event, callback) {
- this.events[event] = callback;
- }
- }
- export default Player;
|