Как получить необработанные байты AudioProperties - PullRequest
0 голосов
/ 21 мая 2019

Я хочу иметь отпечаток пальца / guid для файла звуковой дорожки без добавления какой-либо новой информации в метаданные файла.Этот отпечаток может не быть абсолютно уникальным, но он должен быть настолько уникальным, насколько это возможно, имея в виду, что он должен вычисляться быстрее, чем хэш всех аудиоданных.

При условии, что свойства звука (метаданные) доступны только для чтения, у меня естьприйти к следующему решению:

  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 + моей собственной сериализации.

Есть ли лучший способ сделать то, что я хочу?

...