2011-09-01 43 views
3

我想获得专辑图像/歌曲封面。可能吗?我使用AVPlayer进行音频流传输,如果歌曲包含它,我需要获取专辑封面。就像在iTunes中一样。AVFoundation获取歌曲的专辑图像

SOLUTION:

UIImage *img = nil; 
NSArray *metadata = _avplayer.currentItem.asset.commonMetadata; 
for(AVMetadataItem *item in metadata){ 
    if([item.commonKey isEqualToString:@"artwork"]){ 
     NSData *data = item.value[@"data"]; 
     img = [UIImage imageWithData:data]; 
     return img; 
    } 
} 
return img; 
+0

你好,你有没有找到如何获得专辑封面?我尝试了用户最后的FM服务,但是我的收音机中的歌手并不流行,所以我无法获得专辑封面(( –

回答

0

前提是你的文件是正确的格式,即MP3,你可以将文件的数据加载到ID3标签解析器。 Here's an example of one.它是为OS X制作的,但它看起来应该很容易移植到iOS。

1

你应该试试这个,但我用MPMusicPlayer:

musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 
currentItem = [musicPlayer nowPlayingItem]; 
if (currentItem == nil) { 
    //Not playing 
} 
else 
{ 
    NSString *name = [currentItem valueForProperty:@"title"]; 
    int length = [name length]; 
    if (length > 30) { 
     name = [name substringWithRange:NSMakeRange(0, 30)]; 
     name = [name stringByAppendingString:@"..."]; 
    } 
    NSString *album = [currentItem valueForProperty:@"albumTitle"]; 
    int lengthAl = [album length]; 
    if (lengthAl > 30) { 
     album = [album substringWithRange:NSMakeRange(0, 30)]; 
     album = [album stringByAppendingString:@"..."]; 
    } 
    NSString *artist = [currentItem valueForProperty:@"artist"]; 
    int lengthAr = [artist length]; 
    if (lengthAr > 30) { 
     artist = [artist substringWithRange:NSMakeRange(0, 30)]; 
     artist = [artist stringByAppendingString:@"..."]; 
    } 
    MPMediaItemArtwork *artworkPrev = [currentItem valueForProperty:@"artwork"]; 
    if (artworkPrev != nil) 
    { 
     UIImage *img = [artworkPrev imageWithSize:CGSizeMake(65, 65)]; 
     UIImageView *imgNew = [[UIImageView alloc] initWithImage:img]; 
     imgNew.frame = CGRectMake(-15,-20, 65, 65); 
    } 
} 

正如你可以看到我使用NSMakeRange,我用它只是在我的应用程序不会留下空间。我希望能帮到你

+1

)这只适用于本地播放,我需要在流媒体时播放图片:)但是,谢谢,这将在某一天有用 –

+0

从什么服务流?:P –

+0

还需要流媒体音乐专辑封面! –

相关问题