static buffers (buf, maxHole) {
    if (!buf || !buf.length) return []

    const buffers = []
    for (let i = 0, l = buf.length; i < l; i++) {
      const bufLen = buffers.length
      if (!bufLen || !maxHole) {
        buffers.push([buf.start(i), buf.end(i)])
      } else {
        const last = buffers[bufLen - 1]
        const lastEnd = last[1]
        const start = buf.start(i)
        if (start - lastEnd <= maxHole) {
          const end = buf.end(i)
          if (end > lastEnd) {
            last[1] = end
          }
        } else {
          buffers.push([buf.start(i), buf.end(i)])
        }
      }
    }
    return buffers
  }
@param {TimeRanges} buf
@param {number} [maxHole]
@returns {[number,number][]}