Ключи метаданных AVKit и ID3 - PullRequest
       78

Ключи метаданных AVKit и ID3

0 голосов
/ 17 февраля 2020

Я пытаюсь извлечь все доступные метаданные из mp3-файлов (среди прочих) с помощью инфраструктуры AVKit.

Сначала я получаю «общие» метаданные с чем-то вроде:

    let asset = AVAsset(url: URL(fileURLWithPath: path))
    for item in asset.commonMetadata {
        if let commonKey = item.commonKey {
            if let storageKey = stringValueKeys[commonKey] {

и это прекрасно работает.

Обратите внимание, что я смотрю storageKey, хранящийся в stringValueKeys га sh, чтобы определить, заинтересован ли я в этом элементе, а затем сохранить его во внутренней базе данных для кэширования.

Затем я обрабатываю теги id3 отдельно (они не возвращаются asset.commonKey), используя:

        for item in asset.metadata(forFormat: .id3Metadata) {

        if let key = item.key as? AVMetadataKey {
            if let storageKey = stringValueKeys[key] {

Я могу получить данные правильно, но возвращаемые ключи не совпадают с определенными платформой!?

item.key содержит 3 буквенных ключа , как определено стандартом ID3 (например, TT1, TAL, но AVMetadataKey определяет 4 буквенные клавиши , например AVMetadataKey.id3MetadataKeyAlbumTitle = TALB.

Я не могу найти способ перевода между 4 и 3 буквенными кодами.

Любая помощь будет очень оценили.

1 Ответ

0 голосов
/ 21 февраля 2020

Существует две версии тегов: 3-байтовые теги ID3 2.2 и 4-байтовые теги 2.3 +. Константы, объявленные в AVMetadataKey, представляют собой 4-байтовые теги.

Если вы видите 3-байтовые теги в качестве ключа, то это должен быть файл с тегами 21-летнего тега v2.2 и AVAsset. дает их вам как есть, так что вам просто нужно сделать преобразование самостоятельно. Тэгов не так много, поэтому вы можете легко составить список переходов самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...