【问题标题】:How to obtain audio metadata from music library mediaPicker and the Files app documentPicker?如何从音乐库 mediaPicker 和 Files 应用程序 documentPicker 中获取音频元数据?
【发布时间】:2018-12-26 22:49:43
【问题描述】:

在 Swift 4 中,我不知道如何在导入音频文件时从文档选择器中获取音频元数据,在从用户的媒体库中选择媒体项目时如何从媒体选择器中获取音频元数据。我目前正在将两种导入方法的 url 转换为 AVAudioPlayer 项目。有人可以告诉我一种方法吗,即使我必须为mediaPicker 和documentPicker 分别编码?

func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {

    for song in mediaItemCollection.items as [MPMediaItem] {

        // AVAudioPlayer
        let url = song.value(forProperty: MPMediaItemPropertyAssetURL) as? NSURL

        audioPlayer = try? AVAudioPlayer(contentsOf: url! as URL)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }

    mediaPicker.dismiss(animated: true, completion: nil)
}


    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    guard controller.documentPickerMode == .import else { return }

    let fileURL = url

    let url = url.deletingPathExtension()

    audioPlayer = try? AVAudioPlayer(contentsOf: fileURL)
    audioPlayer.enableRate = true
    audioPlayer.prepareToPlay()
    audioPlayer.play()
    updateCurrentTrack()
}

【问题讨论】:

标签: ios swift mpmediaitem


【解决方案1】:

这不只是遵循文档的问题吗?

  1. 使用 URL 形成 AVAsset。

    https://developer.apple.com/documentation/avfoundation/avurlasset/1385698-init

  2. 现在提取元数据。

    https://developer.apple.com/documentation/avfoundation/avasset/1390498-commonmetadata

  3. 现在获取所需的元数据项:

    https://developer.apple.com/documentation/avfoundation/avmetadataitem/1385843-metadataitems

  4. 您现在拥有一个或多个 AVMetadataItem 对象。要检索值,请使用异步键值加载:

    https://developer.apple.com/documentation/avfoundation/avasynchronouskeyvalueloading

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多