handleSourceOpen_() {
    // Only attempt to create the source buffer if none already exist.
    // handleSourceOpen is also called when we are "re-opening" a source buffer
    // after `endOfStream` has been called (in response to a seek for instance)
    this.setupSourceBuffer_();

    // if autoplay is enabled, begin playback. This is duplicative of
    // code in video.js but is required because play() must be invoked
    // *after* the media source has opened.
    if (this.tech_.autoplay()) {
      this.tech_.play();
    }

    this.trigger('sourceopen');
  }
/**
   * handle the sourceopen event on the MediaSource
   *
   * @private
   */
handle the sourceopen event on the MediaSource
@private
handle the sourceopen event on the MediaSource @private
handleSourceOpen_() {
    this.setupSourceBuffer_();
    if (this.tech_.autoplay()) {
      this.tech_.play();
    }
    this.trigger('sourceopen');
  }
handleSourceOpen_ ( ) { this . setupSourceBuffer_ ( ) ; if ( this . tech_ . autoplay ( ) ) { this . tech_ . play ( ) ; } this . trigger ( 'sourceopen' ) ; }
handle the sourceopen event on the MediaSource
 @private
handle the sourceopen event on the MediaSource @private
// Only attempt to create the source buffer if none already exist. // handleSourceOpen is also called when we are "re-opening" a source buffer // after `endOfStream` has been called (in response to a seek for instance) // if autoplay is enabled, begin playback. This is duplicative of // code in video.js but is required because play() must be invoked // *after* the media source has opened.