使用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音乐播放器示例或我的示例脚本,并告诉我是否或如何获取音频文件的元数据。告诉我你使用的配置以及它是否运行。