fix local playback buffering for chrome
Mwebclient/src/components/PlayerControls.tsx
@@ -36,6 +36,10 @@ export default function PlayerControls(props: PlayerControlsProps) {
}
}
function isLocalPlaying() {
return props.audioElement.src.startsWith("blob:");
}
// Seek to position
function seekTo(e: MouseEvent) {
const playerState = props.playerState;
@@ -46,7 +50,9 @@ export default function PlayerControls(props: PlayerControlsProps) {
const pos = (e.clientX - rect.left) / rect.width;
const duration = playerState.currentTrack.metadata.duration;
props.audioElement.currentTime = Math.min(pos * duration, playerState.buffered - 1);
props.audioElement.currentTime = isLocalPlaying()
? pos * duration
: Math.min(pos * duration, playerState.buffered - 1);
props.setPlayerState("currentTime", pos * duration);
}
@@ -69,12 +75,14 @@ export default function PlayerControls(props: PlayerControlsProps) {
style={{
width: `${
props.playerState.currentTrack
? Math.min(
100,
(props.playerState.buffered /
(props.playerState.currentTrack?.metadata.duration ?? Number.POSITIVE_INFINITY)) *
? isLocalPlaying()
? 100
: Math.min(
100,
)
(props.playerState.buffered /
(props.playerState.currentTrack?.metadata.duration ?? Number.POSITIVE_INFINITY)) *
100,
)
: 0
}%`,
}}