objective-c - AVFoundation 获取歌曲的专辑图片

标签 objective-c ios avfoundation avplayer

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

解决方案:

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;

最佳答案

你应该试试这个,但我用的是 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,我使用它只是为了不在我的应用程序中留下空间。希望对你有帮助

关于objective-c - AVFoundation 获取歌曲的专辑图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7266929/

相关文章:

ios - mergeChangesFromContextDidSaveNotification 后的 KVO 通知

iphone - 子类化 UIButton 添加一个属性

objective-c - App 在 iPad 1 上崩溃,但在 iPad 2 或第 3 代上不会

ios - Firebase:我应该如何构建我的数据库?喜欢 Offerup 和 Letgo

ios - 在其自身初始值内使用的变量

Swift - 长按按钮上的手势以使用 AVFoundation 录制音频

iphone - 同时录制视频和播放音频文件

objective-c - 像在 HTML 中一样访问 UI 输入元素

ios - UIScrollView 在更新约束 subview 时表现得很奇怪

iphone - AVURLAsset 无法加载远程文件