Skip to content

Commit

Permalink
completed faststart support with async methods
Browse files Browse the repository at this point in the history
  • Loading branch information
agrathwohl committed Dec 17, 2021
1 parent 537a2c1 commit b4f8fe4
Showing 1 changed file with 29 additions and 26 deletions.
55 changes: 29 additions & 26 deletions source.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,40 +108,43 @@ class Source extends Resource {
this.byteLength = opts.byteLength || 0
}

isFaststart() {
if (
[path.extname(this.uri), path.extname(this.pathname)].includes('.m4a') ||
[path.extname(this.uri), path.extname(this.pathname)].includes('.mp4') ||
[path.extname(this.uri), path.extname(this.pathname)].includes('.mov')
) {
if (!this.buffer) {
return new Error('No buffer in `Source`')
}
return isFaststart(this.buffer)
} else {
return
}
/**
* Answers the age-old question: is my MPEG-4 container faststarted?
* @async
* @returns {Boolean}
*/
async isFaststart() {
return isFaststart(await this.toBuffer())
}

faststart() {
if (!this.buffer) {
return new Error('No buffer in `Source`')
}

/**
* Create a faststart buffer from the Source
* @async
* @returns {Buffer}
*/
async faststart() {
try {
return faststart(this.buffer)
if (
[path.extname(this.uri), path.extname(this.pathname)].includes('.m4a') ||
[path.extname(this.uri), path.extname(this.pathname)].includes('.mp4') ||
[path.extname(this.uri), path.extname(this.pathname)].includes('.mov')
) {
return faststart(await this.toBuffer())
} else {
return
}
} catch (err) {
return err
}
}

toBuffer(cb) {
streamToBuffer(this.createReadStream())
.then(buf => {
this.buffer = buf
cb(null, buf)
})
.catch(err => cb(err))
/**
* Create a buffer from the Source
* @async
* @returns {Buffer}
*/
async toBuffer() {
return await streamToBuffer(this.createReadStream())
}

/**
Expand Down

0 comments on commit b4f8fe4

Please sign in to comment.