mirror of
https://github.com/chidiwilliams/buzz.git
synced 2026-03-14 14:45:46 +01:00
Adding debug for audio issues (#1310)
This commit is contained in:
parent
9d8ee2112d
commit
463121bb4b
2 changed files with 29 additions and 2 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue