0

助けが必要です。状況は次のようになります: ファイルへのリンクを含むメディア ファイル (mp3s、m4as、m4vs など) のリストを取得できます (次のようになります:

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

したがって、これらのファイルへのリンクで構成される配列を取得します。

これらのアイテムを、対応するタグ (ジャンル、アーティストなど) と最も重要なアルバム アート (ファイルに埋め込まれている) と共に UITableView に表示する必要があります。

どうすればその情報を取得できますか? 可能であれば、メディア ファイル全体をロードせずに。助けてくれてありがとう。

4

3 に答える 3

1

このためのクラスを書きました

これは、metadataRetriever と呼ばれます。の配列を返します

  • アーティスト、
  • 歌、
  • とアルバム

NSStrings として (この順序で)

これは非常に高速であり、同期で使用しても安全です。

.m4a'sid3 情報.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 に答える