Phonon无法在Python中获取音频文件的元数据

时间:2014-04-25 08:56:59

标签: python qt pyqt pyside phonon

使用Python绑定到Qt 4.8的Phonon时,我在获取音频文件(ogg和mp3)的元数据方面遇到了问题。

特别是我在Windows 7和Linux Ubuntu 13.10上尝试了PySide 1.2.1,在第156行后停止了官方musicplayer example

metaData = self.metaInformationResolver.metaData()

并且检查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 = {}

这是Phonon的实施不足还是我做错了什么?

2012年还有一个关于not getting the meta data on Mac的问题,但尚未解决。

请在PySide,PyQt甚至C ++中尝试上面的官方Qt音乐播放器示例或我的示例脚本,并告诉我是否或如何获取音频文件的元数据。告诉我你使用的配置以及它是否运行。

0 个答案:

没有答案