我知道 mp3 有时包含专辑插图(就我而言,我正在处理播客文件)。 iOS中有没有办法从mp3文件中提取图像数据?

最佳答案

MP3,包括播客,通常有嵌入的元数据,包括艺术作品。获取嵌入元数据(对于不在 iTunes 库中的 MP3)的最简单方法是通过 AVAsset 类。如果您尝试通过网络获取元数据,请改用 AVURLAsset,但访问元数据与任何一个都相同。
AVAsset 有一个名为 NSArraycommonMetadata 属性,它包含类 AVMetadataItem 的实例。您可以遍历此数组以找到具有(通常)“commonKey”的 artwork 的元素。此 valueAVMetadataItem 属性应该是有关艺术品的数据的 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/

10-10 18:27
查看更多