Когда я смотрю на вывод функции
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? Могу ли я указать скорость воспроизведения (например, 2x, 4x и т.д. Для удвоения или увеличения в четыре раза скорости) в качестве опции для этого?
Ну, не так много людей смотрели на это, поэтому я продолжал идти и, наконец, понял это. Обратите внимание, что все это относится к моему конкретному игровому проигрывателю, 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 изменить скорость звука.