seekable() {
    let media;
    let mainSeekable;
    let audioSeekable;

    if (!this.masterPlaylistLoader_) {
      return videojs.createTimeRanges();
    }
    media = this.masterPlaylistLoader_.media();
    if (!media) {
      return videojs.createTimeRanges();
    }

    mainSeekable = Hls.Playlist.seekable(media,
                                         this.masterPlaylistLoader_.expired_);
    if (mainSeekable.length === 0) {
      return mainSeekable;
    }

    if (this.audioPlaylistLoader_) {
      audioSeekable = Hls.Playlist.seekable(this.audioPlaylistLoader_.media(),
                                            this.audioPlaylistLoader_.expired_);
      if (audioSeekable.length === 0) {
        return audioSeekable;
      }
    }

    if (!audioSeekable) {
      // seekable has been calculated based on buffering video data so it
      // can be returned directly
      return mainSeekable;
    }

    return videojs.createTimeRanges([[
      (audioSeekable.start(0) > mainSeekable.start(0)) ? audioSeekable.start(0) :
                                                         mainSeekable.start(0),
      (audioSeekable.end(0) < mainSeekable.end(0)) ? audioSeekable.end(0) :
                                                     mainSeekable.end(0)
    ]]);
  }
/**
   * check the seekable range
   *
   * @return {TimeRange} the seekable range
   */
check the seekable range
@return {TimeRange} the seekable range
check the seekable range @return { TimeRange } the seekable range
seekable() {
    let media;
    let mainSeekable;
    let audioSeekable;
    if (!this.masterPlaylistLoader_) {
      return videojs.createTimeRanges();
    }
    media = this.masterPlaylistLoader_.media();
    if (!media) {
      return videojs.createTimeRanges();
    }
    mainSeekable = Hls.Playlist.seekable(media,
                                         this.masterPlaylistLoader_.expired_);
    if (mainSeekable.length === 0) {
      return mainSeekable;
    }
    if (this.audioPlaylistLoader_) {
      audioSeekable = Hls.Playlist.seekable(this.audioPlaylistLoader_.media(),
                                            this.audioPlaylistLoader_.expired_);
      if (audioSeekable.length === 0) {
        return audioSeekable;
      }
    }
    if (!audioSeekable) {
      return mainSeekable;
    }
    return videojs.createTimeRanges([[
      (audioSeekable.start(0) > mainSeekable.start(0)) ? audioSeekable.start(0) :
                                                         mainSeekable.start(0),
      (audioSeekable.end(0) < mainSeekable.end(0)) ? audioSeekable.end(0) :
                                                     mainSeekable.end(0)
    ]]);
  }
seekable ( ) { let media ; let mainSeekable ; let audioSeekable ; if ( ! this . masterPlaylistLoader_ ) { return videojs . createTimeRanges ( ) ; } media = this . masterPlaylistLoader_ . media ( ) ; if ( ! media ) { return videojs . createTimeRanges ( ) ; } mainSeekable = Hls . Playlist . seekable ( media , this . masterPlaylistLoader_ . expired_ ) ; if ( mainSeekable . length === 0 ) { return mainSeekable ; } if ( this . audioPlaylistLoader_ ) { audioSeekable = Hls . Playlist . seekable ( this . audioPlaylistLoader_ . media ( ) , this . audioPlaylistLoader_ . expired_ ) ; if ( audioSeekable . length === 0 ) { return audioSeekable ; } } if ( ! audioSeekable ) { return mainSeekable ; } return videojs . createTimeRanges ( [ [ ( audioSeekable . start ( 0 ) > mainSeekable . start ( 0 ) ) ? audioSeekable . start ( 0 ) : mainSeekable . start ( 0 ) , ( audioSeekable . end ( 0 ) < mainSeekable . end ( 0 ) ) ? audioSeekable . end ( 0 ) : mainSeekable . end ( 0 ) ] ] ) ; }
check the seekable range
 @return {TimeRange} the seekable range
check the seekable range @return { TimeRange } the seekable range
// seekable has been calculated based on buffering video data so it // can be returned directly