关于PyQt Phonon后端音效“速度”的文档

1 投票
1 回答
844 浏览
提问于 2025-04-16 20:33

当我查看这个函数的输出时

Phonon.BackendCapabilities.availableAudioEffects()

我发现其中有一个选项是这样的:

>>> speed_effect = Phonon.BackendCapabilities.availableAudioEffects()[3]
>>> speed_effect.name()
PyQt4.QtCore.QString(u'speed')
>>> speed_effect.__doc__
'Phonon.EffectDescription()\nPhonon.EffectDescription(int, dict-of-QByteArray-QVariant)\nPhonon.EffectDescription(Phonon.EffectDescription)'

我明白我需要把这个效果插入到连接我的音频源文件的路径中,这个实现应该不难。可是我不明白的是,如何访问这些选项,或者这个“速度”效果具体是干什么的。我该如何通过Python接口来访问它?我能否把播放速度(比如2倍速、4倍速等)作为一个选项来指定呢?

1 个回答

3

好吧,最开始没多少人关注这个问题,所以我继续研究,最后终于搞明白了。需要注意的是,以下内容是针对我使用的特定后端媒体播放器gstreamer和Phonon的。如果你用的是其他后端,可能需要自己动手调整一下,看看哪些效果适合你。

这个过程的工作原理是,你可以通过调用这个函数来查看你的Phonon.Effect()选项的名称和描述:

 from PyQt4 import QtGui, QtCore
 from PyQt4.phonon import Phonon
 list_of_backend_audio_effects = Phonon.BackendCapabilities.availableAudioEffects()

接下来,我通过以下方式找到了可用效果中gstreamer的“速度”选项:

 list_of_effect_names = [str(elem.name()) for elem in list_of_backend_audio_effects]
 for iter in range(len(list_of_effect_names)):
     if list_of_effect_names[iter] == 'speed':
         effect_index = iter
         break

最后,你需要实际编辑这些参数,这个过程需要通过一个叫做QVariant的数据类型来完成。要将音频速度加倍,我调用了以下内容:

 speed_effect = Phonon.Effect(list_of_backend_audio_effects[effect_index])
 speed_effect.setParameterValue(speed_effect.parameters()[0],QtCore.QVariant(str(2)))

在第一行,我创建了一个新的Phonon.Effect(),并把效果描述作为输入(也就是通过调用availableAudioEffects()返回的内容)。然后我设置这个效果对象的参数(第一个参数),让它的QVariant值为'2'(第二个参数)。在我的系统中,默认速度是'1',最小值是'0.1',最大值是'40',这代表了从正常音频文件速度的十分之一到40倍的速度范围。

希望这能帮助一些使用Python和gstreamer的朋友们调整音频速度。

撰写回答