Adding debug for audio issues (#1310)

This commit is contained in:
Raivis Dejus 2025-12-12 23:03:45 +02:00 committed by GitHub
commit 463121bb4b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 2 deletions

View file

@ -3,7 +3,7 @@ from typing import Tuple, Optional
from PyQt6 import QtGui
from PyQt6.QtCore import QTime, QUrl, Qt, pyqtSignal
from PyQt6.QtMultimedia import QAudioOutput, QMediaPlayer
from PyQt6.QtMultimedia import QAudioOutput, QMediaPlayer, QMediaDevices
from PyQt6.QtWidgets import QWidget, QSlider, QPushButton, QLabel, QHBoxLayout, QVBoxLayout
from buzz.widgets.icon import PlayIcon, PauseIcon
@ -32,6 +32,16 @@ class AudioPlayer(QWidget):
self.audio_output = QAudioOutput()
self.audio_output.setVolume(100)
# Log audio device info for debugging
default_device = QMediaDevices.defaultAudioOutput()
if default_device.isNull():
logging.warning("No default audio output device found!")
else:
logging.info(f"Audio output device: {default_device.description()}")
audio_outputs = QMediaDevices.audioOutputs()
logging.info(f"Available audio outputs: {[d.description() for d in audio_outputs]}")
self.media_player = QMediaPlayer()
self.media_player.setSource(QUrl.fromLocalFile(file_path))
self.media_player.setAudioOutput(self.audio_output)
@ -95,6 +105,7 @@ class AudioPlayer(QWidget):
self.media_player.positionChanged.connect(self.on_position_changed)
self.media_player.playbackStateChanged.connect(self.on_playback_state_changed)
self.media_player.mediaStatusChanged.connect(self.on_media_status_changed)
self.media_player.errorOccurred.connect(self.on_error_occurred)
self.on_duration_changed(self.media_player.duration())
@ -133,12 +144,16 @@ class AudioPlayer(QWidget):
self.play_button.setIcon(self.play_icon)
def on_media_status_changed(self, status: QMediaPlayer.MediaStatus):
logging.debug(f"Media status changed: {status}")
match status:
case QMediaPlayer.MediaStatus.InvalidMedia:
self.set_invalid_media(True)
case QMediaPlayer.MediaStatus.LoadedMedia:
self.set_invalid_media(False)
def on_error_occurred(self, error: QMediaPlayer.Error, error_string: str):
logging.error(f"Media player error: {error} - {error_string}")
def set_invalid_media(self, invalid_media: bool):
self.invalid_media = invalid_media
if self.invalid_media:

View file

@ -1,6 +1,7 @@
import logging
from typing import Tuple, Optional
from PyQt6.QtCore import Qt, QUrl, pyqtSignal, QTime
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput, QMediaDevices
from PyQt6.QtMultimediaWidgets import QVideoWidget
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QSlider, QPushButton, QHBoxLayout, QLabel, QSizePolicy
from buzz.widgets.icon import PlayIcon, PauseIcon
@ -21,6 +22,13 @@ class VideoPlayer(QWidget):
self.audio_output = QAudioOutput(self)
self.audio_output.setVolume(100)
# Log audio device info for debugging
default_device = QMediaDevices.defaultAudioOutput()
if default_device.isNull():
logging.warning("No default audio output device found!")
else:
logging.info(f"Audio output device: {default_device.description()}")
self.media_player = QMediaPlayer(self)
self.media_player.setSource(QUrl.fromLocalFile(file_path))
self.media_player.setAudioOutput(self.audio_output)
@ -72,6 +80,10 @@ class VideoPlayer(QWidget):
self.media_player.durationChanged.connect(self.on_duration_changed)
self.media_player.playbackStateChanged.connect(self.on_playback_state_changed)
self.media_player.mediaStatusChanged.connect(self.on_media_status_changed)
self.media_player.errorOccurred.connect(self.on_error_occurred)
def on_error_occurred(self, error: QMediaPlayer.Error, error_string: str):
logging.error(f"Media player error: {error} - {error_string}")
def on_media_status_changed(self, status: QMediaPlayer.MediaStatus):
# Only do this once on initial load to show first frame