diff --git a/libs/ui/playback/src/lib/embedded-mpv-player/embedded-mpv-player.component.ts b/libs/ui/playback/src/lib/embedded-mpv-player/embedded-mpv-player.component.ts index b04b2f501..e9001a79b 100644 --- a/libs/ui/playback/src/lib/embedded-mpv-player/embedded-mpv-player.component.ts +++ b/libs/ui/playback/src/lib/embedded-mpv-player/embedded-mpv-player.component.ts @@ -10,6 +10,7 @@ import { inject, input, signal, + untracked, viewChild, } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -271,10 +272,14 @@ export class EmbeddedMpvPlayerComponent implements OnDestroy { return; } + // volume is read untracked so adjusting it during playback does + // not re-trigger this effect (which would tear down and recreate + // the session, restarting the stream from the beginning). + // Subsequent volume changes flow through controller.applyVolume. const teardown = this.controller.startSession( viewport.nativeElement, playback, - this.volume() + untracked(() => this.volume()) ); onCleanup(teardown); });