better buffering

This commit is contained in:
j 2023-07-12 00:22:46 +05:30
parent b3a73dedbf
commit cf3f3c4103

View file

@ -165,15 +165,33 @@ Ox.VideoElement = function(options, self) {
},
progress: function() {
// stop buffering if buffered to end point
if (self.video == this && self.buffering) {
var item = self.items[self.currentItem];
Ox.range(self.video.buffered.length).forEach(function(i) {
if (self.video.buffered.start(i) <= item['in']
&& self.video.buffered.end(i) >= item.out) {
var video = this,
item = self.items[self.currentItem],
nextItem = Ox.mod(self.currentItem + 1, self.numberOfItems),
next = self.items[nextItem],
nextVideo = self.$videos[Ox.mod(self.currentVideo + 1, self.$videos.length)][0];
if (self.video == video && (video.preload != 'none' || self.buffering)) {
if (clipCached(video, item)) {
self.video.preload = 'none';
self.buffering = false;
if (nextVideo != self.video) {
nextVideo.preload = 'auto';
}
}
} else if (!self.buffering && nextVideo == video && video.preload != 'none') {
if (clipCached(video, next)) {
video.preload = 'none';
}
}
function clipCached(video, item) {
var cached = false
Ox.range(video.buffered.length).forEach(function(i) {
if (video.buffered.start(i) <= item['in']
&& self.video.buffered.end(i) >= item.out) {
cached = true
}
});
return cached
}
},
seeking: function() {
@ -358,8 +376,8 @@ Ox.VideoElement = function(options, self) {
if (self.$video.attr('src') != item.src) {
self.loadedMetadata && Ox.Log('Video', 'caching next item failed, reset src');
self.video.src = item.src;
self.video.preload = 'auto';
}
self.video.preload = 'auto';
self.video.volume = getVolume();
self.video.playbackRate = self.options.playbackRate;
self.$video.css(css);