如何在 Qt 程序中实现 IDv3 标签? [关闭]

Posted

技术标签:

【中文标题】如何在 Qt 程序中实现 IDv3 标签? [关闭]【英文标题】:How can I implement IDv3 tags in a Qt Program? [closed] 【发布时间】:2017-04-03 11:03:05 【问题描述】:

我刚刚做了一个 qt 声音播放器,它可以播放 mp3 和其他类型的音频,但我想让它在不久的将来对阅读曲目名称和歌曲文本更有用。目前,应用程序只显示文件名。

应该实现什么库?我找到了一些库,但它们已过时且不再受支持

【问题讨论】:

【参考方案1】:

有几个不同的库可以读取声音文件的信息,你可以试试id3lib

如果你熟悉 C++,代码很容易阅读:

#include <id3/tag.h>

首先你需要知道图书馆可以给你什么信息:

void ShowKnownFrameInfo() 
     ID3_FrameInfo myFrameInfo;
    for (int cur = ID3FID_NOFRAME+1; cur < myFrameInfo.MaxFrameID(); cur ++)
     
     cout << "Short ID: " << myFrameInfo.ShortName(ID3_FrameID(cur)) <<
         " Long ID: " << myFrameInfo.LongName(ID3_FrameID(cur)) <<
         " Desription: " << myFrameInfo.Description(ID3_FrameID(cur)) << endl;
    
 

在下面的代码中使用该信息来访问信息并在任何地方使用它

void readTags(const std::string& musicFile) 
    ID3_Tag myTag(musicFile);
    QScopedPtr<ID3_Tag::Iterator> iter(myTag.CreateIterator());
    ID3_Frame* myFrame = NULL;
    while (NULL != (myFrame = iter->GetNext()))
    
        myFrame->Get("Key", 1024);
    

【讨论】:

【参考方案2】:

Qt 中没有 ID3 阅读器。你可以试试it。

【讨论】:

以上是关于如何在 Qt 程序中实现 IDv3 标签? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 android 应用程序中实现 Youtube/Facebook 类型的标签功能的最佳方法是啥? [关闭]

如何在 Python 和 Qt Quick QML 应用程序中实现简化的双向数据绑定

如何在 Qt 中实现基于 GStreamer 的视频小部件?

如何在 Spring MVC 3 中实现分页 [关闭]

如何在Python和Qt Quick QML应用程序中实现简化的双向数据绑定

如何在 Qt/C++/QML 中实现类似 WPF 的 MVVM?