我一直在尝试从一个.mp3文件中提取元数据信息,以供iPhone应用程序使用。我尝试使用AVAsset,就像this。但它没起作用,常见的元数据是空的。但是audacity和另一个来自应用商店的iOS应用程序可以检索元数据详细信息。我不知道为什么?
因此,我尝试使用AudioToolBox框架下面的代码来提取相同的内容。
这段代码返回了除专辑封面以外的所有内容。当我尝试使用
我的问题是,为什么
为什么无法提取
解决方案更新:由于我使用的URL是用以下方式创建的,所以
而不是
因此,我尝试使用AudioToolBox框架下面的代码来提取相同的内容。
CFDictionaryRef piDict = nil;
UInt32 piDataSize = sizeof(piDict);
// Populates a CFDictionary with the ID3 tag properties
err = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict);
if(err != noErr) {
NSLog(@"AudioFileGetProperty failed for property info dictionary");
return nil;
}
// Toll free bridge the CFDictionary so that we can interact with it via objc
NSMutableDictionary* nsDict = [(__bridge NSDictionary*)piDict mutableCopy];
这段代码返回了除专辑封面以外的所有内容。当我尝试使用
kAudioFilePropertyAlbumArtwork
提取专辑封面时,我遇到了osstatus
错误(无法完成操作)。因此,最后我尝试了ObjC
包装器libId3(在这里找到)。它完美地解决了我的问题,我可以得到专辑封面。我的问题是,为什么
AVAsset
不能检索数据?我错过了什么吗?有人设法使它工作了吗?如果有示例,将不胜感激。为什么无法提取
kAudioFilePropertyAlbumArtwork
?这两个问题都发生在我拥有的所有.mp3文件中。解决方案更新:由于我使用的URL是用以下方式创建的,所以
AVAsset
对我不起作用。 [NSURL URLWithString:[filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]
而不是
NSURL *fileURL = [NSURL fileURLWithPath:filePath];