gpt4 book ai didi

c++ - Taglib 从任意文件 c++ 中读取 ID3v2 标签

转载 作者:行者123 更新时间:2023-12-02 10:29:14 25 4
gpt4 key购买 nike

我正在尝试使用 TagLib C++ API 从任意音频文件中读取 ID3v2 元数据。此文件不一定是 .mp3文件,并且可能是其他常见的音频格式。我有以下内容:

std::string readId3v2Tag(std::string filePath, std::string tagName) {
// read from file
TagLib::FileRef f(filePath.c_str());
if (!f.isNull() && f.file()) {
// get tags from property map
TagLib::PropertyMap tags = f.file()->properties();
if (tags.find(tag) != tags.end()) {
return std::string(tags[tag][0].toCString());
}
}
}
但是,当我输入 ID3v2 框架名称时,它不会返回任何内容。我相信这是因为 f.file()->properties() map 包含 TagLib 的标签格式。我必须能够按名称访问 ID3v2 帧。
我被告知使用 ID3v2类,但是我看不到如何从文件中访问它,并且在阅读 API 文档时遇到了麻烦。有谁知道如何做到这一点?

最佳答案

请务必阅读手册:it tells you不使用 file()方法。还有properties()不会给你 ID3v2 标签 框架 - 您应该迭代所有这些以查看它们的键和值。
反而

  • 使用 MPEG::File (见 manual )然后从那里开始/阅读
  • 超过 ID3v2Tag() (见 manual )
  • frameList() (见 manual)。

  • 一旦条款明确,就很简单了:一个文件可以有零到多个 标签 ,其中一个 ID3v2 标签可以有一个到多个 框架 .然而,单独的文件也可以有多个 房产 未绑定(bind)到标签(即音频持续时间、位深度...) - 难怪你的 框架 您搜索的名称不会显示在文件的 中房产 .

    关于c++ - Taglib 从任意文件 c++ 中读取 ID3v2 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62975308/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com