QMediaPlayer, как изменять громкость звука?
Пытаюсь управлять системной громкостью звука.
Ничего дельного для такой задачи не нашел, кроме модуля sound. Импортировал его командой pip install.
А после этого появился интересный момент:
- если прописать в программе
import sound, то все будет в порядке, - но при написании
from sound import Soundвыдает ошибкуImportError: cannot import name 'Sound' from 'sound' <путь>.
Как мне исправить ошибку, ведь я не смог найти других модулей, способных изменять громкость звука?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Класс QMediaPlayer позволяет воспроизводить медиаисточник.
volume: intЭто свойство содержит текущую громкость воспроизведения.
Громкость воспроизведения линейно масштабируется в диапазоне от 0 (тишина) до 100 (полная громкость). Значения вне этого диапазона будут ограничены.
import sys
from PyQt5.Qt import QUrl, Qt
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QPushButton, QGridLayout
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.player = QMediaPlayer(self)
self.volumeslider = QSlider(Qt.Horizontal)
self.volumeslider.setFocusPolicy(Qt.NoFocus)
self.volumeslider.valueChanged[int].connect(self.change_volume)
self.volumeslider.setValue(100)
self.volume = self.volumeslider.value()
play_btn = QPushButton('Play')
play_btn.clicked.connect(self.playMedia)
pause_btn = QPushButton('Pause')
pause_btn.clicked.connect(self.pauseMedia)
stop_btn = QPushButton('Stop')
stop_btn.clicked.connect(self.stopMedia)
layout = QGridLayout(self)
layout.addWidget(play_btn, 0, 0)
layout.addWidget(pause_btn, 0, 1)
layout.addWidget(stop_btn, 0, 2)
layout.addWidget(self.volumeslider, 1, 0, 1, 3)
self.player.setMedia(QMediaContent(QUrl(
'http://europaplus.hostingradio.ru:8014/ep-top256.mp3'
)))
self.player.setVolume(self.volume)
self.player.play()
def change_volume(self, value):
self.player.setVolume(value)
def playMedia(self):
self.player.play()
def pauseMedia(self):
self.player.pause()
def stopMedia(self):
self.player.stop()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
