我正在尝试研究如何在 Ubuntu 中使用 Phonon 以不同的速度播放声音。我的第一个想法是检查函数调用中可用的选项:
Phonon.BackendCapabilities.availableAudioEffects()
但是,当我导入 PyQt 和 Phonon 然后进行该函数调用时,会发生以下情况:
ely@zaffpants:~/Desktop$ python2.6
Python 2.6.6
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt4; from PyQt4.phonon import Phonon
>>> print Phonon.BackendCapabilities
<class 'PyQt4.phonon.BackendCapabilities'>
>>> print Phonon.BackendCapabilities.availableAudioEffects()
WARNING: Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface
ASSERT: "QCoreApplication::instance()" in file ../../phonon/factory.cpp, line 378
Aborted
ely@zaffpants:~/Desktop$
我在网上找不到任何好的线程。为什么会中止?另请注意,在我当前的程序中,我已经在使用 Phonon 同时播放多个音频流,甚至将其链接到管理自定义视频播放器(不在 Phonon 中)的 Qt 线程,以保持音频同步,即使用户在视频中拖得更快。因此,必须正确安装 Phonon 才能达到这个程度,而且我已经使用了一些后端功能特性。当我查询有什么后端效果时,为什么会中止?
有什么建议么?即使他们没有修复这个错误,有没有关于如何强制 Phonon 比正常播放音频文件更快或更慢的建议?
添加
我通过执行以下操作解决了中止问题:导入 PyQt 和 Phonon 后,我创建了一个虚拟 QApplication 并为其命名,如下所示
>>> import sys
>>> app = PyQt4.QtGui.QApplication(sys.argv)
>>> app.setApplicationName('myname')
>>> print Phonon.BackendCapabilities.availableAudioEffects()
但是这里是函数的输出,即使在从列表中指定了一项之后,它也是不可读的。不知道如何把它变成可读的形式......?
(<unknown>:1848): GStreamer-CRITICAL **: gst_debug_add_log_function: assertion `func != NULL' failed
[<PyQt4.phonon.EffectDescription object at 0x7f941539ed70>, <PyQt4.phonon.EffectDescription object at 0x7f941539ef30>, <PyQt4.phonon.EffectDescription object at 0x7f941539efa0>, <PyQt4.phonon.EffectDescription object at 0x7f9408032050>, <PyQt4.phonon.EffectDescription object at 0x7f94080320c0>, <PyQt4.phonon.EffectDescription object at 0x7f9408032130>]
>>> print Phonon.BackendCapabilities.availableAudioEffects()[0]
<PyQt4.phonon.EffectDescription object at 0x7f941539ed70>
Post Script 正如在下面的评论中,我想出了关于 Phonon 中音频速度的大部分内容,并且该线程在这里:<有关 PyQt Phonon 后端音频效果“速度”的文档>