Blame view

node_modules/videojs-contrib-media-sources/es5/create-text-tracks-if-necessary.js 1.96 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
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
  /**
   * @file create-text-tracks-if-necessary.js
   */
  
  /**
   * Create text tracks on video.js if they exist on a segment.
   *
   * @param {Object} sourceBuffer the VSB or FSB
   * @param {Object} mediaSource the HTML or Flash media source
   * @param {Object} segment the segment that may contain the text track
   * @private
   */
  'use strict';
  
  Object.defineProperty(exports, '__esModule', {
    value: true
  });
  var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) {
    var player = mediaSource.player_;
  
    // create an in-band caption track if one is present in the segment
    if (segment.captions && segment.captions.length) {
      if (!sourceBuffer.inbandTextTracks_) {
        sourceBuffer.inbandTextTracks_ = {};
      }
  
      for (var trackId in segment.captionStreams) {
        if (!sourceBuffer.inbandTextTracks_[trackId]) {
          player.tech_.trigger({ type: 'usage', name: 'hls-608' });
          var track = player.textTracks().getTrackById(trackId);
  
          if (track) {
            // Resuse an existing track with a CC# id because this was
            // very likely created by videojs-contrib-hls from information
            // in the m3u8 for us to use
            sourceBuffer.inbandTextTracks_[trackId] = track;
          } else {
            // Otherwise, create a track with the default `CC#` label and
            // without a language
            sourceBuffer.inbandTextTracks_[trackId] = player.addRemoteTextTrack({
              kind: 'captions',
              id: trackId,
              label: trackId
            }, false).track;
          }
        }
      }
    }
  
    if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) {
      sourceBuffer.metadataTrack_ = player.addRemoteTextTrack({
        kind: 'metadata',
        label: 'Timed Metadata'
      }, false).track;
      sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType;
    }
  };
  
  exports['default'] = createTextTracksIfNecessary;
  module.exports = exports['default'];