【问题标题】:availableAudioEffects() error when trying to play audio at different speed in Phonon尝试在 Phonon 中以不同速度播放音频时出现 availableAudioEffects() 错误
【发布时间】:2011-09-25 09:25:19
【问题描述】:

我正在尝试研究如何在 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>

后期脚本 在下面的 cmets 中,我发现了大部分关于 Phonon 的音频速度,并且该线程在这里:Documentation on PyQt Phonon backend audio effect 'speed' >

【问题讨论】:

    标签: python pyqt phonon


    【解决方案1】:

    您将获得EffectDescription 对象的列表。您可以从class reference 获取 api。例如,

    >>>for effect in Phonon.BackendCapabilities.availableAudioEffects():
           print effect.name()
    
    ParamEq
    WavesReverb
    Gargle
    Compressor
    Distortion
    Echo
    I3DL2Reverb
    Flanger
    Chorus
    

    另一方面,我认为您的安装有些问题。我不熟悉 Ubuntu,但我认为您不应该收到这些错误消息。我认为您也不应该创建一个 QApplication 对象来获取此信息。我不必在 WinXP 上。

    【讨论】:

    • 感谢您的帮助。你知道我如何找到有关如何在 PyQt 中实际使用这些效果的文档吗?当我发出这个命令时:>>> print [(str(elem.name()),str(elem.description())) for elem in Phonon.BackendCapabilities.availableAudioEffects()],有一个选项叫做'speed ' 声称允许我设置速度/音高。我可以用它来加倍播放速率吗?如果是这样,我在哪里可以学习如何使用此效果来做到这一点?
    • 恐怕这超出了我对 Phonon 的熟悉程度。我所能做的就是将您指向 Phonon 概述 riverbankcomputing.co.uk/static/Docs/PyQt4/html/… 的方向。基本思想是你调用Phonon.createPath()创建一个路径对象,然后你可以从该对象调用insertEffect()来添加效果。
    • 另外,我在这个链接中找到:doc.qt.nokia.com/latest/phonon-capabilities.html> 一些文档解释了由于 Linux 使用 DBUS,您实际上必须像我在上面所做的那样设置一个应用程序并为其命名。所以这个安装可能没问题,只是操作系统不同。
    • 嗯,好的。那么很抱歉误导了你。
    • 没问题。另外,为了完整起见,我终于弄清楚了音频速度选项如何与 Phonon 一起工作,至少在我的系统上是这样。该线程的链接在这里:stackoverflow.com/questions/6527507/…>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多