【问题标题】:How to get ID3 tags for media files on iPhone如何在 iPhone 上获取媒体文件的 ID3 标签
【发布时间】:2010-07-27 04:00:56
【问题描述】:

我需要一些帮助。 情况如下所示: 我可以获得带有文件链接的媒体文件列表(mp3s、m4as、m4vs 等等)(看起来像:

http://10.0.1.1/Media/Files%20Folder/File%20Itself.m4v

所以我得到了一个包含这些文件的链接的数组。

我需要在 UITableView 中显示这些项目以及相应的标签(流派、艺术家等),最重要的是,专辑封面(嵌入在文件中)。

如何获取这些信息?如果可能,不加载整个媒体文件。 感谢您的帮助。

【问题讨论】:

    标签: iphone uitableview mp3 id3-tag


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2012-07-29
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        • 2014-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多