声子能';t在Python中获取音频文件的元数据
我在使用Python绑定到Phonon(Qt4.8的一部分)获取音频文件(ogg和mp3)的元数据时遇到问题 特别是,我在Windows 7和Linux Ubuntu 13.10上的Python3.3上尝试了PySide 1.2.1,在第156行之后停止时,官方:声子能';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
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访问)。