Документация по фоновому звуковому эффекту PyQt Phonon 'speed' - PullRequest
1 голос
/ 30 июня 2011

Когда я смотрю на вывод функции

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 и т. Д. Для удвоения или удвоения скорости) в качестве опции для этого?

1 Ответ

3 голосов
/ 30 июня 2011

Ну, не слишком много людей смотрели на это, поэтому я продолжал и наконец понял это.Обратите внимание, что все это относится к моему конкретному медиаплееру gstreamer для Phonon.Если у вас другой бэкэнд, вам нужно будет немного поработать, чтобы увидеть, с какими эффектами вам нужно поиграться.

Способ, которым это работает, заключается в том, что вы можете видеть имена и описания вашего Phonon.Effect () опций путем вызова функции

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

После этого я выяснил, какой из доступных эффектов был опцией gstreamer 'speed', выполнив следующее:

 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 изменить скорость звука.

...