0

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

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

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

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

我怎样才能获取这些信息?如果可能,不加载整个媒体文件。谢谢你的帮助。

4

3 回答 3

1

我为此写了一堂课

它称为元数据检索器。它返回一个数组

  • 艺术家,
  • 歌曲,
  • 和专辑

作为 NSStrings(按此顺序)

它非常快,并且对于同步使用是安全的。

需要注意的是,它不起作用,.m4a's因为 id3 信息.m4a's不同。

于 2011-12-31T03:31:30.987 回答
0

您将要AVURLAsset与方法一起使用-loadValuesAsynchronouslyForKeys:completionHandler:

另请注意,文档说

AVAsset 和其他类“延迟”提供它们的元数据(请参阅 AVAsynchronousKeyValueLoading),这意味着您可以从这些数组中获取对象,而不会为您最终不检查的项目产生开销。

所以我猜你不会遇到加载整个文件的问题。

于 2010-07-27T04:30:38.360 回答
0

查看AVMetadataItemAPI:

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
于 2020-03-06T16:19:10.157 回答