diff --git a/receivers/electron/src/player/Player.ts b/receivers/electron/src/player/Player.ts index d2860ae..d7cf776 100644 --- a/receivers/electron/src/player/Player.ts +++ b/receivers/electron/src/player/Player.ts @@ -182,6 +182,7 @@ export class Player { if (Number.isNaN(dashBufferLength)) dashBufferLength = 0; + dashBufferLength += dashPlayer.time(); return dashBufferLength; } else { // HLS, HTML const videoPlayer = this.player as HTMLVideoElement; diff --git a/receivers/electron/src/player/Renderer.ts b/receivers/electron/src/player/Renderer.ts index d3a7617..5f17a12 100644 --- a/receivers/electron/src/player/Renderer.ts +++ b/receivers/electron/src/player/Renderer.ts @@ -249,6 +249,8 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => { playerPrevTime = videoElement.currentTime; } }; + // Buffering UI update when paused + videoElement.onprogress = () => { playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate); }; videoElement.onratechange = () => { sendPlaybackUpdate(videoElement.paused ? 2 : 1) }; videoElement.onvolumechange = () => { playerCtrlStateUpdate(PlayerControlEvent.VolumeChange); @@ -266,8 +268,8 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => { // Sender generated event handlers window.electronAPI.onPause(() => { playerCtrlStateUpdate(PlayerControlEvent.Pause); }); window.electronAPI.onResume(() => { playerCtrlStateUpdate(PlayerControlEvent.Play); }); - window.electronAPI.onSeek((_event, value: SeekMessage) => { console.log("electron on seek " + value.time); player.setCurrentTime(value.time); }); - window.electronAPI.onSetVolume((_event, value: SetVolumeMessage) => { player.setVolume(value.volume); playerCtrlStateUpdate(PlayerControlEvent.VolumeChange); }); + window.electronAPI.onSeek((_event, value: SeekMessage) => { player.setCurrentTime(value.time); }); + window.electronAPI.onSetVolume((_event, value: SetVolumeMessage) => { volumeChangeHandler(value.volume); }); window.electronAPI.onSetSpeed((_event, value: SetSpeedMessage) => { player.setPlaybackRate(value.speed); playerCtrlStateUpdate(PlayerControlEvent.SetPlaybackRate); }); }); @@ -324,7 +326,7 @@ function playerCtrlStateUpdate(event: PlayerControlEvent) { case PlayerControlEvent.ToggleMute: player.setMute(!player.isMuted()); - break; + // fallthrough case PlayerControlEvent.VolumeChange: { const volume = Math.round(player.getVolume() * playerCtrlVolumeBar.offsetWidth); @@ -352,7 +354,7 @@ function playerCtrlStateUpdate(event: PlayerControlEvent) { const progress = Math.round((player.getCurrentTime() / player.getDuration()) * playerCtrlProgressBar.offsetWidth); const handle = progress + playerCtrlProgressBar.offsetLeft; - playerCtrlProgressBarBuffer.setAttribute("style", `width: ${progress + buffer}px`); + playerCtrlProgressBarBuffer.setAttribute("style", `width: ${buffer}px`); playerCtrlProgressBarProgress.setAttribute("style", `width: ${progress}px`); playerCtrlProgressBarHandle.setAttribute("style", `left: ${handle}px`); diff --git a/receivers/electron/src/player/style.css b/receivers/electron/src/player/style.css index e7cd13c..c977a1d 100644 --- a/receivers/electron/src/player/style.css +++ b/receivers/electron/src/player/style.css @@ -177,6 +177,7 @@ body { left: 8px; bottom: 8px; height: 4px; + width: 0px; background-color: #019BE7; border-radius: 3px; pointer-events: none;