我正在尝试创建一个更改音频输出卷的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()
但是,即使我可以移动卷滑块,实际卷也不会改变。我想念什么?
我从未使用过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)