有没有办法从ios中的mp3中提取嵌入的图像数据

时间:2011-10-18 21:58:24

标签: iphone objective-c ios image mp3

据我所知,mp3有时会包含专辑封面(在我的情况下,我正在使用播客文件)。 iOS中有没有办法从mp3文件中提取图像数据?

3 个答案:

答案 0 :(得分:9)

MP3(包括播客)通常会嵌入元数据,包括艺术品。获取嵌入式元数据(对于不在iTunes库中的MP3)的最简单方法是通过AVAsset类。如果您尝试通过网络获取元数据,请改用AVURLAsset,但访问元数据与之相同。

AVAsset有一个名为NSArray的{​​{1}}属性,其中包含类commonMetadata的实例。您可以遍历此数组以查找AVMetadataItem(通常)为“commonKey”的元素。此artwork的{​​{1}}属性应为value关于艺术品的数据。在此词典中,您将找到密钥“AVMetadataItem”,其中应包含可用于构建NSDictionary的数据。这是完全嵌套的,这种描述无疑是令人困惑的。所以这是一个代码示例。

data

这是一个如何从本地资源加载的一个非常简单的例子;如果您通过网络加载,则应使用UIImage。还要注意这个电话的阻塞性质。

答案 1 :(得分:0)

看看Apple的样本AddMusic项目,您将看到他们如何通过MPMediaItem& amp;获取专辑作品。 MPMediaItemArtwork个对象。

答案 2 :(得分:0)

-(UIImage *)getMP3Pic:(NSURL *)url
{
    AVAsset *asset = [AVAsset assetWithURL:url];
    for (AVMetadataItem *metadataItem in asset.commonMetadata) {
       if ([metadataItem.commonKey isEqualToString:@"artwork"]){
            return [UIImage imageWithData:(NSData *)metadataItem.value];
       }
    }
}