据我所知,mp3有时会包含专辑封面(在我的情况下,我正在使用播客文件)。 iOS中有没有办法从mp3文件中提取图像数据?
答案 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];
}
}
}