如何在 iPhone 上获取媒体文件的 ID3 标签
Posted
技术标签:
【中文标题】如何在 iPhone 上获取媒体文件的 ID3 标签【英文标题】:How to get ID3 tags for media files on iPhone 【发布时间】:2010-07-27 04:00:56 【问题描述】:我需要一些帮助。 情况如下所示: 我可以获得带有文件链接的媒体文件列表(mp3s、m4as、m4vs 等等)(看起来像:
http://10.0.1.1/Media/Files%20Folder/File%20Itself.m4v
所以我得到了一个包含这些文件的链接的数组。
我需要在 UITableView 中显示这些项目以及相应的标签(流派、艺术家等),最重要的是,专辑封面(嵌入在文件中)。
如何获取这些信息?如果可能,不加载整个媒体文件。 感谢您的帮助。
【问题讨论】:
【参考方案1】:我写了class for this
它被称为 metadataRetriever。它返回一个数组
艺术家, 歌曲, 和专辑作为 NSStrings(按此顺序)
它非常快,并且可以安全地同步使用。
需要注意的是,它不适用于 .m4a's
,因为 .m4a's
的 id3 信息不同。
【讨论】:
【参考方案2】:您需要将AVURLAsset
与-loadValuesAsynchronouslyForKeys:completionHandler:
方法一起使用。
还要注意文档说
AVAsset 和其他类“延迟地”提供它们的元数据(请参阅 AVAsynchronousKeyValueLoading),这意味着您可以从这些数组中获取对象,而不会为您最终不检查的项目产生开销。
所以我猜你不会遇到加载整个文件的问题。
【讨论】:
好像只有ios4。我也在写 iPad 版本,我想我得另辟蹊径。感谢您展示简单的方法。【参考方案3】:查看AVMetadataItem
API:
let asset = AVAsset(url: url)
assert(asset.isReadable)
let artwork = AVMetadataItem.metadataItems(from: asset.metadata, filteredByIdentifier: .commonIdentifierArtwork).first?.dataValue
let artist = AVMetadataItem.metadataItems(from: asset.metadata, filteredByIdentifier: .commonIdentifierArtist).first?.stringValue
let title = AVMetadataItem.metadataItems(from: asset.metadata, filteredByIdentifier: .commonIdentifierTitle).first?.stringValue
let albumName = AVMetadataItem.metadataItems(from: asset.metadata, filteredByIdentifier: .commonIdentifierAlbumName).first?.stringValue
let duration = asset.duration.seconds
【讨论】:
以上是关于如何在 iPhone 上获取媒体文件的 ID3 标签的主要内容,如果未能解决你的问题,请参考以下文章
通过浏览器使用 javascript/jQuery 读取和写入 ID3 标签到本地文件?