Я пытаюсь извлечь все доступные метаданные из 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 буквенными кодами.
Любая помощь будет очень оценили.