refactor: Update loadedTime getter in Artplayer

The code changes update the loadedTime getter in Artplayer to handle different scenarios. The getter now checks for the presence of the loadedTime property in the video element and returns it if available, otherwise it falls back to the previous logic of retrieving the buffered end time. This update improves the reliability and compatibility of Artplayer's loadedTime functionality.
This commit is contained in:
Harvey Zack committed 2024-08-21 22:28:00 +08:00
1 parent 0a7d3ca5aa
commit 796f25cea2
4 files changed
+32 -19

No files matched your search

+14 -6
View File
@@ -20,7 +20,6 @@ export default function artplayerProxyWebAV() {
videoWidth: 0,
videoHeight: 0,
currentTime: 0,
loadedTime: 0,
volume: 1,
autoplay: false,
playbackRate: 1,
@@ -28,6 +27,7 @@ export default function artplayerProxyWebAV() {
ended: false,
readyState: 0,
muted: false,
buffered: 0,
};
function reset() {
@@ -37,7 +37,6 @@ export default function artplayerProxyWebAV() {
videoWidth: 0,
videoHeight: 0,
currentTime: 0,
loadedTime: 0,
volume: 1,
autoplay: false,
playbackRate: 1,
@@ -45,6 +44,7 @@ export default function artplayerProxyWebAV() {
ended: false,
readyState: 0,
muted: false,
buffered: 0,
});
}
@@ -84,7 +84,11 @@ export default function artplayerProxyWebAV() {
curTime += (1000 / 30) * 1000 * state.playbackRate;
state.currentTime = curTime / 1e6;
// 更新缓冲状态
state.buffered = Math.max(state.buffered, state.currentTime);
art.emit('video:timeupdate', { type: 'timeupdate' });
art.emit('video:progress', { type: 'progress' });
if (clipState === 'done') {
stop();
@@ -181,10 +185,6 @@ export default function artplayerProxyWebAV() {
get: () => [{}],
});
def(canvas, 'loadedTime', {
get: () => state.loadedTime,
});
def(canvas, 'duration', {
get: () => state.duration,
});
@@ -278,6 +278,14 @@ export default function artplayerProxyWebAV() {
},
});
def(canvas, 'buffered', {
get: () => ({
start: () => 0,
end: () => state.buffered,
length: 1,
}),
});
// Define methods
def(canvas, 'play', {
value: async () => {
+1 -5
View File
@@ -9,11 +9,7 @@ export default function seekMix(art) {
def(art, 'loadedTime', {
get: () => {
if (typeof $video.loadedTime === 'number') {
return $video.loadedTime;
} else {
return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0;
}
return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0;
},
});
}