我想以秒为单位查找歌曲的长度,以便制作 M3U 格式的播放列表,但我不知道如何从文件中获取该信息。我正在使用 id3lib 和 Qt。
我试过了:
ID3_Frame* myFrame = myTag.Find(ID3FID_SONGLEN);
ID3_Frame* myFrame = myTag.Find(ID3FID_TIME);
ID3_Frame* myFrame = myTag.Find(ID3FID_SIZE);
但 myFrame 为 NULL。我尝试了其他参数并工作,例如ID3FID_ALBUM
. 我真的不知道该尝试什么。我在 id3lib API 中没有找到任何东西。
我知道 Qt 可以给我这些信息,但我不能使用 id3lib 吗?
稍后编辑:我读到MediaObject::totalTime()
只有在播放歌曲时才给我时间,但我想要关于歌曲是否播放的信息;我需要此信息才能将其写入文件。
后期编辑:
我正在尝试使用 Qt 中的 Phonon 作为长度,但我收到了很多错误。
#include <Phonon/MediaSource>
#include <Phonon/MediaObject>
#include <iostream>
#include <Qstring>
/* stuff */
Phonon::MediaObject *mediaObject = new Phonon::MediaObject();
QString fileName("D:/melodie.mp3");
mediaObject->setCurrentSource(fileName);
cout << mediaObject->totalTime() << endl;
我得到了很多未解决的外部符号
main.obj:-1: 错误: LNK2019: 无法解析的外部符号“__declspec(dllimport) public: __thiscall Phonon::MediaObject::MediaObject(class QObject *)” (_ imp ??0MediaObject@Phonon@@QAE@PAVQObject@@ @Z) 在函数 _main 中引用
我正在使用 QCreator,我的应用程序很简单,只是一个打招呼的窗口(如果我不使用 Phonon,它可以工作);我就是不能让它运行;我已经分配了静态媒体对象,我已经制作了一个 MediaSource 并尝试传递它,但它不起作用(这里它说不能从 MediaSource* 转换为 MediaSource &)。可能是什么问题呢?