我正在尝试创建一个VolumeSlider
窗口小部件,用于更改音频输出的音量。
log.debug("Starting audio player (%s)..." % url)
mediaSource = Phonon.MediaSource(url)
mediaSource.setAutoDelete(True)
self.player = Phonon.createPlayer(Phonon.VideoCategory, mediaSource)
self.player.setTickInterval(100)
self.player.tick.connect(self.updatePlayerLength)
self.mediaSlider.setMediaObject(self.player)
audioOutput = Phonon.AudioOutput(Phonon.MusicCategory)
Phonon.createPath(self.player, audioOutput)
self.mediaVolumeSlider.setAudioOutput(audioOutput)
self.player.play()
然而,即使我可以移动音量滑块,实际音量也不会改变。我错过了什么?
答案 0 :(得分:1)
我从未使用Phonon.createPlayer,因为API似乎完全令人费解。显然,它应该是一个“便利”功能,它在媒体对象和音频输出之间创建一条路径。但它只提供对媒体对象的引用。似乎无法访问音频输出对象,这似乎使它完全没用(但我可能会遗漏一些东西)。
无论如何,我认为明确地创建路径会更方便,因此很清楚所有部分是如何连接在一起的。
以下代码适用于Linux和WinXP:
self.media = Phonon.MediaObject(self)
self.video = Phonon.VideoWidget(self)
self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self)
Phonon.createPath(self.media, self.audio)
Phonon.createPath(self.media, self.video)
self.slider = Phonon.VolumeSlider(self)
self.slider.setAudioOutput(self.audio)