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