|
|
|
@ -185,15 +185,26 @@ class Video extends React.PureComponent { |
|
|
|
|
|
|
|
|
|
handlePlay = () => { |
|
|
|
|
this.setState({ paused: false }); |
|
|
|
|
this._updateTime(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
handlePause = () => { |
|
|
|
|
this.setState({ paused: true }); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_updateTime () { |
|
|
|
|
requestAnimationFrame(() => { |
|
|
|
|
this.handleTimeUpdate(); |
|
|
|
|
|
|
|
|
|
if (!this.state.paused) { |
|
|
|
|
this._updateTime(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
handleTimeUpdate = () => { |
|
|
|
|
this.setState({ |
|
|
|
|
currentTime: Math.floor(this.video.currentTime), |
|
|
|
|
currentTime: this.video.currentTime, |
|
|
|
|
duration: Math.floor(this.video.duration), |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
@ -231,7 +242,7 @@ class Video extends React.PureComponent { |
|
|
|
|
this.video.volume = slideamt; |
|
|
|
|
this.setState({ volume: slideamt }); |
|
|
|
|
} |
|
|
|
|
}, 60); |
|
|
|
|
}, 15); |
|
|
|
|
|
|
|
|
|
handleMouseDown = e => { |
|
|
|
|
document.addEventListener('mousemove', this.handleMouseMove, true); |
|
|
|
@ -259,13 +270,14 @@ class Video extends React.PureComponent { |
|
|
|
|
|
|
|
|
|
handleMouseMove = throttle(e => { |
|
|
|
|
const { x } = getPointerPosition(this.seek, e); |
|
|
|
|
const currentTime = Math.floor(this.video.duration * x); |
|
|
|
|
const currentTime = this.video.duration * x; |
|
|
|
|
|
|
|
|
|
if (!isNaN(currentTime)) { |
|
|
|
|
this.video.currentTime = currentTime; |
|
|
|
|
this.setState({ currentTime }); |
|
|
|
|
this.setState({ currentTime }, () => { |
|
|
|
|
this.video.currentTime = currentTime; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}, 60); |
|
|
|
|
}, 15); |
|
|
|
|
|
|
|
|
|
togglePlay = () => { |
|
|
|
|
if (this.state.paused) { |
|
|
|
@ -374,8 +386,10 @@ class Video extends React.PureComponent { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
handleProgress = () => { |
|
|
|
|
if (this.video.buffered.length > 0) { |
|
|
|
|
this.setState({ buffer: this.video.buffered.end(0) / this.video.duration * 100 }); |
|
|
|
|
const lastTimeRange = this.video.buffered.length - 1; |
|
|
|
|
|
|
|
|
|
if (lastTimeRange > -1) { |
|
|
|
|
this.setState({ buffer: Math.ceil(this.video.buffered.end(lastTimeRange) / this.video.duration * 100) }); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -477,7 +491,6 @@ class Video extends React.PureComponent { |
|
|
|
|
onClick={this.togglePlay} |
|
|
|
|
onPlay={this.handlePlay} |
|
|
|
|
onPause={this.handlePause} |
|
|
|
|
onTimeUpdate={this.handleTimeUpdate} |
|
|
|
|
onLoadedData={this.handleLoadedData} |
|
|
|
|
onProgress={this.handleProgress} |
|
|
|
|
onVolumeChange={this.handleVolumeChange} |
|
|
|
@ -518,7 +531,7 @@ class Video extends React.PureComponent { |
|
|
|
|
|
|
|
|
|
{(detailed || fullscreen) && ( |
|
|
|
|
<span> |
|
|
|
|
<span className='video-player__time-current'>{formatTime(currentTime)}</span> |
|
|
|
|
<span className='video-player__time-current'>{formatTime(Math.floor(currentTime))}</span> |
|
|
|
|
<span className='video-player__time-sep'>/</span> |
|
|
|
|
<span className='video-player__time-total'>{formatTime(duration)}</span> |
|
|
|
|
</span> |
|
|
|
|