首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自AVMetadataItem目标c的ISRC代码

来自AVMetadataItem目标c的ISRC代码
EN

Stack Overflow用户
提问于 2013-12-17 04:54:18
回答 1查看 734关注 0票数 0

我想得到本地itunes歌曲的ISRC代码。我可以通过以下代码获得metaData:

代码语言:javascript
复制
 MPMusicPlayerController *mp= mp = [MPMusicPlayerController applicationMusicPlayer];
  NSURL *assetURL = [mp.nowPlayingItem valueForProperty:MPMediaItemPropertyAssetURL];
    AVAsset *asset = [AVAsset assetWithURL:assetURL];
    NSArray *metadata = [asset commonMetadata];
        for ( AVMetadataItem* item in metadata ) {
            NSString *key = [item commonKey];
            NSString *value = [item stringValue];
            NSLog(@"extra iptions %@",[item extraAttributes]);
            NSLog(@"key = %@, value = %@", key, value);

            NSLog(@"keyspace and Local %@   %@",[item keySpace],[item key]);

        }

但是我真的很想知道如何获得ISRC(国际标准记录编码)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 05:07:26

试一试(警告:输入浏览器)

代码语言:javascript
复制
NSArray *metadata = [asset metadataForFormat:AVMetadataFormatID3Metadata];
if (metadata == nil) {
    NSLog(@"No ID3 metadata for asset: %@", asset);
}
// From https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVFoundation_ID3Constants/Reference/reference.html

NSArray *filteredMetadata = [AVMetadataItem metadataItemsFromArray:metadata withKey:AVMetadataID3MetadataKeyInternationalStandardRecordingCode keySpace:nil];
AVMetadataItem *item = [filteredMetadata firstObject];
if (item != nil) {
    NSLog(@"ISRC: %@", item.stringValue);
} else {
    NSLog(@"No ISRC found for: %@", asset);
}

编辑:我应该提到,您的原始代码没有打印ISRC值的原因是ISRC不是公共元数据空间的一部分,并且不会包含在[asset commonMetadata]返回的数组中。ISRC密钥是特定于ID3元数据的,因此如果您的资产没有与其关联的ID3元数据,您将无法检索该信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20626190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档