Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声子能';t在Python中获取音频文件的元数据_Python_Qt_Pyqt_Pyside_Phonon - Fatal编程技术网

声子能';t在Python中获取音频文件的元数据

声子能';t在Python中获取音频文件的元数据,python,qt,pyqt,pyside,phonon,Python,Qt,Pyqt,Pyside,Phonon,我在使用Python绑定到Phonon(Qt4.8的一部分)获取音频文件(ogg和mp3)的元数据时遇到问题 特别是,我在Windows 7和Linux Ubuntu 13.10上的Python3.3上尝试了PySide 1.2.1,在第156行之后停止时,官方: metaData = self.metaInformationResolver.metaData() 尽管所选文件具有元数据,但检查元数据不会给出任何结果({}) 我在示例脚本中看到了相同的行为: from PySide impor

我在使用Python绑定到Phonon(Qt4.8的一部分)获取音频文件(ogg和mp3)的元数据时遇到问题

特别是,我在Windows 7和Linux Ubuntu 13.10上的Python3.3上尝试了PySide 1.2.1,在第156行之后停止时,官方:

metaData = self.metaInformationResolver.metaData()
尽管所选文件具有元数据,但检查元数据不会给出任何结果(
{}

我在示例脚本中看到了相同的行为:

from PySide import QtCore
from PySide.phonon import Phonon

def state_changed(newState, oldState):
    print('state change {} : {}'.format(oldState, newState))
    if newState == Phonon.ErrorState:
        print('error {} : {}'.format(media_object.errorType(), media_object.errorString()))

def meta_changed():
    meta_data = media_object.metaData()
    print('meta change = {}'.format(meta_data))

if __name__ == '__main__':
    app = QtCore.QCoreApplication([])
    app.setApplicationName('test')

    audio_output = Phonon.AudioOutput(Phonon.MusicCategory)
    media_object = Phonon.MediaObject()
    Phonon.createPath(media_object, audio_output)

    media_object.metaDataChanged.connect(meta_changed)
    media_object.stateChanged.connect(state_changed)
    media_object.setCurrentSource('test.ogg')
    media_object.play()

    QtCore.QTimer.singleShot(2000, meta_changed) # just to check that there is really no meta data

    QtCore.QTimer.singleShot(5000, app.quit)
    app.exec_()
哪些输出到:

meta change = {}
state change PySide.phonon.Phonon.State.LoadingState : PySide.phonon.Phonon.State.PlayingState
meta change = {}
那么,这是声子的缺陷实现还是我做错了什么?

从2012年开始,这里还有一个问题没有解决


请尝试官方Qt MyScPooor示例或我在PySide、PyQT或C++中上面的示例脚本,并告诉我你是否可以获得音频文件的元数据。告诉我您使用的配置以及它是否运行。

在Arch Linux(gstreamer后端)上使用PySide-1.2.1或PyQt4-4.10.4和Qt-4.8.5对我来说效果很好。@ekhumoro感谢您的测试。顺便说一句,你如何确定正在使用的后端?我不知道任何编程方式来做这件事。在我的Arch Linux系统上,我只安装了gstreamer后端。DE可能应该提供一些选择首选设备的方法。我知道对于KDE,有一个声子配置模块可以实现这一点(可以通过系统设置IIRC访问)。