AudioFileSetProperty返回'kAudioFileUnsupportedPropertyError(pty?)'
编写audio文件的元数据时遇到困难:
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);
第6行的NSLog为我提供了一个ID3信息的好字典。 但是,当我想改变(例如专辑名称,第9行),我得到一个OSStatus'pty?' 作为回报。
任何人都可以给我指点我做错了什么。 或者,甚至可以更好/更简单/更快捷地编辑audio文件的ID3标签/元数据。
在这里做几乎相同的事情。 您可以使用以下代码检查OSStatus错误。
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil]; NSLog(@"Error: %@", [error description]);
我得到的是:
错误:错误域= NSOSStatusErrorDomain代码= 1886681407“该操作无法完成。(OSStatus错误1886681407.)”
难道是iOS只是不允许你修改kAudioFilePropertyInfoDictionary?
更新:
我只是将idlib3移植到iOS,您可以使用它来修改ID3标记。 一个示例项目也包括在内。 在这里检查https://github.com/rjyo/libid3-ios