zhangzengfei
2020-09-07 929cf4c7be11bfd1e134d0cb0d7cbbe94772ebdf
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
/*
 * Flow Controller
 */
/* eslint-disable */
import Event from '../events';
import EventHandler from '../event-handler';
 
class FlowController extends EventHandler {
  constructor(wfs) {
    super(
      wfs,
      Event.MEDIA_ATTACHED,
      Event.BUFFER_CREATED,
      Event.FILE_PARSING_DATA,
      Event.FILE_HEAD_LOADED,
      Event.FILE_DATA_LOADED,
      Event.WEBSOCKET_ATTACHED,
      Event.FRAG_PARSING_DATA,
      Event.FRAG_PARSING_INIT_SEGMENT
    );
 
    this.fileStart = 0;
    this.fileEnd = 0;
    this.pendingAppending = 0;
    this.mediaType = undefined;
    channelName: this.channelName;
  }
 
  destroy() {
    EventHandler.prototype.destroy.call(this);
  }
 
  onMediaAttached(data) {
    if (data.websocketName != undefined) {
      var client = new WebSocket(data.websocketName);
      this.wfs.attachWebsocket(client, data.channelName, data.cameraInfo);
    } else {
      console.log('websocketName ERROE!!!');
    }
  }
 
  onBufferCreated(data) {
    this.mediaType = data.mediaType;
  }
 
  onFileHeadLoaded(data) {}
 
  onFileDataLoaded(data) {}
 
  onFileParsingData(data) {}
 
  onWebsocketAttached(data) {
    this.wfs.trigger(Event.BUFFER_APPENDING, {
      type: 'video',
      data: data.payload,
      parent: 'main'
    });
  }
 
  onFragParsingInitSegment(data) {
    var tracks = data.tracks,
      trackName,
      track;
 
    track = tracks.video;
    if (track) {
      track.id = data.id;
    }
 
    for (trackName in tracks) {
      track = tracks[trackName];
      var initSegment = track.initSegment;
      if (initSegment) {
        this.pendingAppending++;
        this.wfs.trigger(Event.BUFFER_APPENDING, {
          type: trackName,
          data: initSegment,
          parent: 'main'
        });
      }
    }
  }
 
  onFragParsingData(data) {
    if (data.type === 'video') {
    }
 
    [data.data1, data.data2].forEach(buffer => {
      if (buffer) {
        this.pendingAppending++;
        this.wfs.trigger(Event.BUFFER_APPENDING, {
          type: data.type,
          data: buffer,
          parent: 'main'
        });
      }
    });
  }
}
export default FlowController;