Не получается произвести звук не типа wav

Есть код. Указан путь к файлу, всё хорошо, звук воспроизводит. Но когда пытаюсь указать путь к аудиофайлу не формата wav, звук не воспроизводиться. Можно ли другие форматы использовать, если да - то какие?

import sys
from PyQt5.QtMultimedia import QSound
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()

        self.sound = QSound('D:\\Downloads\\1605369153_Clap 14.wav', self)

        self.play_btn = QPushButton('Play Sound', self)
        self.play_btn.clicked.connect(self.sound.play)       # 2


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())

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

Автор решения: Serg Bocharov

Дело в том, что QSound воспроизводит только wav файлы (может и ошибаюсь) Для воспроизведения других форматов, Вам необходимо использовать QMediaPlayer. Выглядит это как-то так:

import sys
from PyQt5 import QtMultimedia, QtCore
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

UPDATE

class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()

        self.url = QtCore.QUrl.fromLocalFile('D:\\Downloads\\filename1.mp3')
        self.content = QtMultimedia.QMediaContent(self.url)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(self.content)
        self.play_btn = QPushButton('Play Sound', self)
        self.play_btn.clicked.connect(self.player.play)
        self.play_btn_2 = QPushButton('Play Sound 2', self)
        self.play_btn_2.move(0, 30)
        self.play_btn_2.clicked.connect(self.restart)

    def restart(self):
        self.player.stop()
        self.url_new = QtCore.QUrl.fromLocalFile("D:\\Downloads\\filename2.mp3")
        self.content_new = QtMultimedia.QMediaContent(self.url_new)
        self.player.setMedia(self.content_new)
        self.player.play()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())
→ Ссылка