我想从mp3或m4a文件中提取类型。元数据存在,如iTunes中所示,我已经设法为类型提取了一些NSData对象,但无法将任何内容映射到特定类型。
此外,密钥没有正确比较,所以我找到正确密钥的方法确实是黑客。
我目前的代码是这样的。
- (NSDictionary*) getMetaDictionary:(AVAsset*)asset
{
for (NSString *format in [asset availableMetadataFormats]) {
for (AVMetadataItem *item in [asset metadataForFormat:format]) {
if (item.key && [item.keySpace isEqualToString:@"itsk"]) {
NSUInteger akey = NSSwapInt([(NSNumber *)[item key] unsignedIntValue]);
NSString *keyString = [NSString stringWithFormat:@"%.4s",&akey];
NSLog(@"key: %@ - value: %@", keyString, ([keyString isEqualToString:@"covr"]?@"nope":item.value));
if ([keyString isEqualToString:@"©gen"])
{
NSLog(@"Genre: %@", item.value);
}
if ([keyString isEqualToString:@"gnre"])
{
NSData* genData = [[NSData alloc] initWithData:((NSData*)item.value)];
NSString* genreString = [[NSString alloc] initWithData:genData encoding:NSASCIIStringEncoding];
NSLog(@"Genre from data: %@", genreString);
}
}
}
}
这会生成以下输出:
key: ©nam - value: Smokebelch II (Beatless Mix)
key: ©ART - value: The Sabres Of Paradise
key: ©wrt - value: Jose Padilla
key: ©alb - value: Café Del Mar - the Best of (Disc 1)
key: gnre - value: <0063>
我的理解是'gnre'包含该类型的id。你怎么得到这个ID?如何将其映射到实际ID。
请提供任何帮助或建议吗?
答案 0 :(得分:0)
可在此处找到ID3标签的类型列表: http://id3.org/id3v2.3.0
查看附录(第8节)。 我不确定Apple如何维护他们的标签数据库,但我强烈认为它已根据我所包含的链接进行了更新。