remux (createInit = false, options = {}) {
    const videoTrack = this.videoTrack
    const audioTrack = this.audioTrack
    const hasVideo = videoTrack.exist()
    const hasAudio = audioTrack.exist()

    let videoInitSegment
    let audioInitSegment

    let initSegment
    const tracks = []

    if (createInit) {
      if (options && options.initMerge) {
        if (hasVideo) {
          tracks.push(this.videoTrack)
        }
        if (hasAudio) {
          tracks.push(this.audioTrack)
        }
        initSegment = MP4.initSegment(tracks)
      } else {
        if (hasVideo) videoInitSegment = MP4.initSegment([this.videoTrack])
        if (hasAudio) audioInitSegment = MP4.initSegment([this.audioTrack])
      }
    }

    let videoSegment
    let audioSegment
    if (hasVideo && videoTrack.hasSample()) {
      videoSegment = this._remuxVideo()
    }

    if (hasAudio && audioTrack.hasSample()) {
      audioSegment = this._remuxAudio()
    }

    videoTrack.samples = []
    audioTrack.samples = []

    return {
      initSegment,
      videoInitSegment,
      audioInitSegment,
      videoSegment,
      audioSegment
    }
  }
@param {boolean} [createInit=false]
@returns {RemuxResult}