我知道 mp3 有时包含专辑插图(就我而言,我正在处理播客文件)。 iOS中有没有办法从mp3文件中提取图像数据?
最佳答案
MP3,包括播客,通常有嵌入的元数据,包括艺术作品。获取嵌入元数据(对于不在 iTunes 库中的 MP3)的最简单方法是通过 AVAsset
类。如果您尝试通过网络获取元数据,请改用 AVURLAsset
,但访问元数据与任何一个都相同。AVAsset
有一个名为 NSArray
的 commonMetadata
属性,它包含类 AVMetadataItem
的实例。您可以遍历此数组以找到具有(通常)“commonKey
”的 artwork
的元素。此 value
的 AVMetadataItem
属性应该是有关艺术品的数据的 NSDictionary
。在这本字典中,您会找到键“data
”,它应该包含可用于构建 UIImage
的数据。这是相当嵌套的,这个描述无疑是令人困惑的。所以这是一个代码示例。
NSURL *url = <# url of resource here #>;
AVAsset *asset = [AVAsset assetWithURL:url];
for (AVMetadataItem *metadataItem in asset.commonMetadata) {
if ([metadataItem.commonKey isEqualToString:@"artwork"]){
NSDictionary *imageDataDictionary = (NSDictionary *)metadataItem.value;
NSData *imageData = [imageDataDictionary objectForKey:@"data"];
UIImage *image = [UIImage imageWithData:imageData];
// Display this image on my UIImageView property imageView
self.imageView.image = image;
}
}
同样,这是一个非常简单的示例,说明如何从本地资源加载;如果您通过网络加载它,您应该使用
AVURLAsset
。还要注意此调用的阻塞性质。关于iphone - 有没有办法从ios中的mp3中提取嵌入的图像数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7814248/