
在mac上点击mp3歌曲播放时会发现有一张专辑的图片,那么除了图片外还有什么数据呢?
1、实现一下
从网上随便找了一个MP3的歌曲陈雪凝-绿色.mp3
for (NSString *format in [aset availableMetadataFormats]) {
for (AVMetadataItem *metadata in [aset metadataForFormat:format]) {
NSLog(@"歌曲信息%@",metadata.commonKey);
// if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
// NSLog(@"歌曲名称:%@",metadata.commonKey);
// }
}
}
2、打印一下
打印一下metadata.commonKey
和metadata.value

3、分析一下
结合commonkey
的枚举的内容得知:
AVMetadataCommonKeyTitle
: 歌曲名称
AVMetadataCommonKeyAlbumName
: 专辑名称
AVMetadataCommonKeyType
: 歌曲风格
AVMetadataCommonKeyPublisher
: 发布源
AVMetadataCommonKeyArtwork
: 图片数据(NSData格式)
AVMetadataCommonKeyArtist
: 歌手名称
4、显示一下
code:
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyArtwork]) {
self.songImageView.image = [UIImage imageWithData:(NSData *)metadata.value];
}
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"歌曲:%@\n",metadata.value]];
}
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyAlbumName]) {
songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"专辑:%@\n",metadata.value]];
}
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyType]) {
songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"曲风:%@\n",metadata.value]];
}
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyPublisher]) {
songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"来源:%@\n",metadata.value]];
}
if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyArtist]) {
songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"歌手:%@\n",metadata.value]];
}
look:

5、封装一下
-(NSDictionary *)songContentMetaForMp3FliePath:(NSString *)filePath{
AVURLAsset *aset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:filePath] options:nil];
NSMutableDictionary *songDataDic = [NSMutableDictionary dictionary];
for (NSString *format in [aset availableMetadataFormats]) {
for (AVMetadataItem *metadata in [aset metadataForFormat:format]) {
[songDataDic setValue:metadata.value forKey:metadata.commonKey];
}
}
return songDataDic;
}
都看到这里了,点个❤️不过分吧
网友评论