AudioFileSetProperty返回'kAudioFileUnsupportedPropertyError(pty?)'

bas*_*svk 5 iphone audio id3 ios

我在编写音频文件的元数据时遇到了困难:

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);
Run Code Online (Sandbox Code Playgroud)

第6行的NSLog给了我一个包含ID3信息的好词典.但是当我想改变时(例如专辑名称,第9行)我得到一个OSStatus'pty?' 作为回报.

谁能指点我做错了什么的人.或者甚至可以更好/更简单/更快速地编辑音频文件的ID3标签/元数据.

rjy*_*jyo 4

在这里做几乎同样的事情。您可以使用以下代码检查 OSStatus 错误。

\n\n
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];\nNSLog(@"Error: %@", [error description]);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到的是:

\n\n
\n

错误:错误域=NSOSStatusErrorDomain代码=1886681407“操作无法\xe2\x80\x99t完成。(OSStatus错误1886681407。)”

\n
\n\n

难道iOS只是不允许你修改kAudioFilePropertyInfoDictionary吗?

\n\n
\n\n

更新:

\n\n

我刚刚将idlib3移植到iOS,你可以用它来修改ID3标签。还包括一个示例项目。在这里查看https://github.com/rjyo/libid3-ios

\n

  • 我刚刚将idlib3移植到iOS,你可以用它来修改ID3标签。还包括一个示例项目。在这里查看 https://github.com/rjyo/libid3-ios (2认同)