PyQt5. Воспроизведение аудио

Нужен оптимальный вариант воспроизведения аудио расширения .wav. Таких аудио некоторое количество.

Как я понял, это можно сделать с помощью PyQt5.QtMultimedia.QMediaPlayer и PyQt5.QtMultimedia.QMediaContent, но я не могу разобраться как именно.


Ответы (2 шт):

Автор решения: Mikhail

Как пример реализации плеера, поиск нужного файла:

def fileOpen(self):
        fileAc = QAction('Open File',self)
        fileAc.setShortcut('Ctrl+O')
        fileAc.setStatusTip('Open File')
        fileAc.triggered.connect(self.openFile)
        return fileAc
        
    def openFile(self):
        fileChoosen = QFileDialog.getOpenFileUrl(self,'Open Music File', expanduser('~'),'Audio (*.mp3 *.ogg *.wav)','*.mp3 *.ogg *.wav')
        if fileChoosen != None:
            self.currentPlaylist.addMedia(QMediaContent(fileChoosen[0]))

Запуск аудиофайла:

def playHandler(self):
        self.userAction = 1
        self.statusBar().showMessage('Playing at Volume %d'%self.player.volume())
        if self.player.state() == QMediaPlayer.StoppedState :
            if self.player.mediaStatus() == QMediaPlayer.NoMedia:
                #self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.currentFile)))
                print(self.currentPlaylist.mediaCount())
                if self.currentPlaylist.mediaCount() == 0:
                    self.openFile()
                if self.currentPlaylist.mediaCount() != 0:
                    self.player.setPlaylist(self.currentPlaylist)
            elif self.player.mediaStatus() == QMediaPlayer.LoadedMedia:
                self.player.play()
            elif self.player.mediaStatus() == QMediaPlayer.BufferedMedia:
                self.player.play()
        elif self.player.state() == QMediaPlayer.PlayingState:
            pass
        elif self.player.state() == QMediaPlayer.PausedState:
            self.player.play()

Конструкцию self вы задаете вначале и указываете необходимые параметры: setVolume, player...

→ Ссылка
Автор решения: amchancy

Реализовал следующим образом:

from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtCore import QUrl

media_player = QMediaPlayer()
url = QUrl.fromLocalFile("audio.wav")
content = QMediaContent(url)
media_player.setMedia(content)
media_player.play()

Для каждого объекта пришлось создать свой QMediaPlayer, так как при использовании одного экземпляра этого класса звуки могли "перебивать" друг друга.

→ Ссылка