如何获取AudioProperties的原始字节

时间:2019-05-20 23:08:56

标签: taglib

我想为音轨文件提供指纹/指南,而又不向文件的元数据注入任何新信息。该指纹可能不是绝对唯一的,但要记住它应该比所有音频数据的哈希值更快地计算出来。

假设音频属性(元数据)为只读,我得出以下解决方案:

  1. 读取轨道的所有音频属性。
  2. 从这些属性中获取哈希值。

两条轨道具有完全相同的音频属性而不是相同的可能性很小,所以我不在乎所有这些属性的含义。我只想获取所有音频属性的原始字节,而不考虑文件格式。

我想要类似的东西:

TagLib::ByteVector getRawAudioProperties(TagLib::FileRef track)
{
    if (track.isNull())
        return {};
    if (const auto metaData = f.audioProperties())
       return metaData->GetRawBytes();
    return {};
}

很显然,taglib不提供像GetRawBytes这样的方法。我可以通过手动处理TagLib::AudioProperties的所有子类的所有属性以及自己的序列化来完成自己想要的事情。

有什么更好的方式来做我想做的事吗?

0 个答案:

没有答案