From b59c4d04cbe55ff1120d400560782ec3a5d23a59 Mon Sep 17 00:00:00 2001 From: Tianxiao Wang Date: Wed, 17 Apr 2019 14:06:22 +0800 Subject: [PATCH] fix: failed to execute start on TimeRanges (#71) --- packages/griffith-mp4/src/mse/controller.js | 6 ++++-- packages/griffith-mp4/src/player.js | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/griffith-mp4/src/mse/controller.js b/packages/griffith-mp4/src/mse/controller.js index fd8c494f..aa2ca835 100644 --- a/packages/griffith-mp4/src/mse/controller.js +++ b/packages/griffith-mp4/src/mse/controller.js @@ -140,7 +140,7 @@ export default class MSE { const time = isSeek ? this.video.currentTime : Math.floor((start + end) / 2) const buffered = this.video.buffered - if (buffered) { + if (buffered && buffered.length > 0) { for (let i = 0; i < buffered.length; i++) { if (time >= buffered.start(i) && time <= buffered.end(i)) { return true @@ -213,7 +213,9 @@ export default class MSE { const track = this.sourceBuffers[key] const length = track.buffered.length - track.remove(track.buffered.start(0), track.buffered.end(length - 1)) + if (length > 0) { + track.remove(track.buffered.start(0), track.buffered.end(length - 1)) + } } } diff --git a/packages/griffith-mp4/src/player.js b/packages/griffith-mp4/src/player.js index 5b02bdd6..c8e7f1f7 100644 --- a/packages/griffith-mp4/src/player.js +++ b/packages/griffith-mp4/src/player.js @@ -29,7 +29,7 @@ export default class Player extends Component { const currentTime = this.video.currentTime const buffered = this.video.buffered - if (isSafari) { + if (isSafari && buffered && buffered.length > 0) { if (currentTime - 0.1 > buffered.start(0)) { this.mse.seek(this.video.currentTime) } else if (currentTime < buffered.start(0)) { @@ -57,7 +57,12 @@ export default class Player extends Component { handleVideoProgress = e => { const buffered = this.video.buffered const currentTime = this.video.currentTime - if (isSafari && buffered.length > 0 && currentTime < buffered.start(0)) { + if ( + isSafari && + buffered && + buffered.length > 0 && + currentTime < buffered.start(0) + ) { this.handleVideoSeeking() } this.props.onProgress(e)