buffering prop implemented in HTMLVideo

This commit is contained in:
NikolaBorislavovHristov 2019-01-16 12:22:04 +02:00
parent c0ea366fc4
commit 425e7adeb2

View file

@ -51,6 +51,13 @@ var HTMLVideo = function(containerElement) {
return Math.floor(videoElement.duration * 1000);
}
function getBuffering() {
if (!loaded) {
return null;
}
return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;
}
function getVolume() {
if (destroyed) {
return null;
@ -140,6 +147,9 @@ var HTMLVideo = function(containerElement) {
function onDurationChanged() {
events.emit('propChanged', 'duration', getDuration());
}
function onBufferingChanged() {
events.emit('propChanged', 'buffering', getBuffering());
}
function onVolumeChanged() {
events.emit('propChanged', 'volume', getVolume());
}
@ -216,6 +226,13 @@ var HTMLVideo = function(containerElement) {
videoElement.removeEventListener('durationchange', onDurationChanged);
videoElement.addEventListener('durationchange', onDurationChanged);
return;
case 'buffering':
events.emit('propValue', 'buffering', getBuffering());
videoElement.removeEventListener('waiting', onBufferingChanged);
videoElement.addEventListener('waiting', onBufferingChanged);
videoElement.removeEventListener('playing', onBufferingChanged);
videoElement.addEventListener('playing', onBufferingChanged);
return;
case 'volume':
events.emit('propValue', 'volume', getVolume());
videoElement.removeEventListener('volumechange', onVolumeChanged);
@ -383,6 +400,7 @@ var HTMLVideo = function(containerElement) {
onPausedChanged();
onTimeChanged();
onDurationChanged();
onBufferingChanged();
onSubtitleTracksChanged();
onSelectedSubtitleTrackIdChanged();
onSubtitleDelayChanged();
@ -402,6 +420,7 @@ var HTMLVideo = function(containerElement) {
onPausedChanged();
onTimeChanged();
onDurationChanged();
onBufferingChanged();
updateSubtitleText();
flushArgsQueue();
return;
@ -417,6 +436,8 @@ var HTMLVideo = function(containerElement) {
videoElement.removeEventListener('timeupdate', onTimeChanged);
videoElement.removeEventListener('durationchange', onDurationChanged);
videoElement.removeEventListener('volumechange', onVolumeChanged);
videoElement.removeEventListener('waiting', onBufferingChanged);
videoElement.removeEventListener('playing', onBufferingChanged);
containerElement.removeChild(videoElement);
containerElement.removeChild(stylesElement);
containerElement.removeChild(subtitlesElement);
@ -438,7 +459,7 @@ var HTMLVideo = function(containerElement) {
HTMLVideo.manifest = {
name: 'HTMLVideo',
embedded: true,
props: ['paused', 'time', 'duration', 'volume', 'subtitleTracks', 'selectedSubtitleTrackId', 'subtitleSize', 'subtitleDelay', 'subtitleDarkBackground']
props: ['paused', 'time', 'duration', 'volume', 'buffering', 'subtitleTracks', 'selectedSubtitleTrackId', 'subtitleSize', 'subtitleDelay', 'subtitleDarkBackground']
};
module.exports = HTMLVideo;