AudioFileSetProperty, возвращающий «kAudioFileUnsupportedPropertyError (pty?)» - PullRequest
5 голосов
/ 28 декабря 2011

У меня проблемы с записью метаданных аудиофайла:

AudioFileID fileID = nil;
AudioFileOpenURL((__bridge CFURLRef) url, kAudioFileReadWritePermission, 0, &fileID );
CFDictionaryRef piDict = nil;
UInt32 piDataSize   = sizeof(piDict);   
AudioFileGetProperty( fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict );
NSLog(@"%@", (__bridge NSDictionary *)piDict);

NSMutableDictionary *dict = (__bridge NSMutableDictionary*)piDict;
[dict setObject:@"NEW ALBUM NAME" forKey:@"album"];
piDict = (__bridge CFDictionaryRef)dict;
piDataSize = sizeof(dict);
OSStatus status = AudioFileSetProperty(fileID, kAudioFilePropertyInfoDictionary, piDataSize, &piDict);

NSLog в строке # 6 дает мне хороший словарь с информацией ID3.Но когда я хочу изменить (например, название альбома, строка № 9), я получаю OSStatus 'pty?'взамен.

Любой, кто может подсказать мне, что я делаю неправильно.Или, может быть, даже лучше / проще / быстрее редактировать теги / метаданные ID3 для аудиофайлов.

1 Ответ

4 голосов
/ 24 января 2012

Делаем здесь почти то же самое.Вы можете проверить ошибку OSStatus с помощью следующего кода.

NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
NSLog(@"Error: %@", [error description]);

И вот что я получил:

Ошибка: Ошибка Domain = NSOSStatusErrorDomain Code = 1886681407 «Операция не может быть завершена. (Ошибка OSStatus 1886681407.)»

Может быть, iOS просто не позволяет вам изменить kAudioFilePropertyInfoDictionary?


Обновление:

Я просто портировал idlib3 на iOS, и вы можете использовать его для изменения тега ID3.Пример проекта также включен.Проверьте это здесь https://github.com/rjyo/libid3-ios

...