我想为音轨文件提供指纹/指南,而又不向文件的元数据注入任何新信息。该指纹可能不是绝对唯一的,但要记住它应该比所有音频数据的哈希值更快地计算出来。
假设音频属性(元数据)为只读,我得出以下解决方案:
两条轨道具有完全相同的音频属性而不是相同的可能性很小,所以我不在乎所有这些属性的含义。我只想获取所有音频属性的原始字节,而不考虑文件格式。
我想要类似的东西:
TagLib::ByteVector getRawAudioProperties(TagLib::FileRef track)
{
if (track.isNull())
return {};
if (const auto metaData = f.audioProperties())
return metaData->GetRawBytes();
return {};
}
很显然,taglib不提供像GetRawBytes
这样的方法。我可以通过手动处理TagLib::AudioProperties
的所有子类的所有属性以及自己的序列化来完成自己想要的事情。
有什么更好的方式来做我想做的事吗?