Videre
This commit is contained in:
Binary file not shown.
@@ -33,6 +33,7 @@ class Player(QObject):
|
||||
self._duration: int = 0
|
||||
self._demo_mode = False
|
||||
self._demo_stop_sec = 10
|
||||
self._demo_fading = False
|
||||
self._volume = 78
|
||||
|
||||
if VLC_AVAILABLE:
|
||||
@@ -78,11 +79,13 @@ class Player(QObject):
|
||||
self.state_changed.emit("playing")
|
||||
|
||||
def play_demo(self, stop_at_sec: int = 10):
|
||||
"""Afspil fra start og stop automatisk ved stop_at_sec."""
|
||||
"""Afspil fra start og stop automatisk ved stop_at_sec med 2 sek fade-out."""
|
||||
self._demo_mode = True
|
||||
self._demo_stop_sec = stop_at_sec
|
||||
self._demo_fading = False
|
||||
if VLC_AVAILABLE and self._media_player:
|
||||
self._media_player.set_time(0)
|
||||
self._media_player.audio_set_volume(self._volume)
|
||||
self._media_player.play()
|
||||
self._poll_timer.start()
|
||||
self.state_changed.emit("playing")
|
||||
@@ -94,7 +97,9 @@ class Player(QObject):
|
||||
|
||||
def stop(self):
|
||||
self._demo_mode = False
|
||||
self._demo_fading = False
|
||||
if VLC_AVAILABLE and self._media_player:
|
||||
self._media_player.audio_set_volume(self._volume)
|
||||
self._media_player.stop()
|
||||
self._poll_timer.stop()
|
||||
self.position_changed.emit(0.0)
|
||||
@@ -138,15 +143,33 @@ class Player(QObject):
|
||||
self.position_changed.emit(pos)
|
||||
self.time_changed.emit(cur, self._duration)
|
||||
|
||||
# Demo-stop
|
||||
# Demo fade-out og stop
|
||||
if self._demo_mode and cur >= self._demo_stop_sec:
|
||||
# Færdig — gendan volumen og stop
|
||||
if VLC_AVAILABLE and self._media_player:
|
||||
self._media_player.audio_set_volume(self._volume)
|
||||
self.stop()
|
||||
self._demo_mode = False
|
||||
self._demo_fading = False
|
||||
self.position_changed.emit(0.0)
|
||||
self.time_changed.emit(0, self._duration)
|
||||
self.state_changed.emit("demo_ended")
|
||||
return
|
||||
|
||||
# Demo fade-out — de sidste 2 sekunder
|
||||
FADE_SEC = 2.0
|
||||
if self._demo_mode and VLC_AVAILABLE and self._media_player:
|
||||
secs_left = self._demo_stop_sec - cur
|
||||
if secs_left <= FADE_SEC and secs_left > 0:
|
||||
# Fade fra fuld volumen til 0 over FADE_SEC sekunder
|
||||
fade_fraction = secs_left / FADE_SEC # 1.0 → 0.0
|
||||
faded_vol = int(self._volume * fade_fraction)
|
||||
self._media_player.audio_set_volume(max(0, faded_vol))
|
||||
self._demo_fading = True
|
||||
elif not self._demo_fading:
|
||||
# Ikke i fade-zone endnu — sørg for fuld volumen
|
||||
self._media_player.audio_set_volume(self._volume)
|
||||
|
||||
# VU-meter: brug VLC's audio-amplitude hvis tilgængelig, ellers simulér
|
||||
if VLC_AVAILABLE and self._media_player and self._media_player.is_playing():
|
||||
# VLC eksponerer ikke amplitude direkte — vi bruger en blød simulation
|
||||
|
||||
Reference in New Issue
Block a user