通过AVAssetDownloadTask / Session下载后,如何更新AVURLAsset的元数据?

时间:2018-10-10 02:22:35

标签: ios swift avassetwriter avasset avurlasset

我正在实现某些HLS / m3u8流的脱机播放。使用AVAssetDownloadURLSession,一切都按预期方式工作,并使用它通过流URL给AVAssetDownloadTasks赋予AVURLAsset

我想在下载完成之前或之后将一些自定义信息保存在资产的metadata属性中,但它是只读的。我尝试使用AVAssetExportSessionAVAssetWriter等,但是由于(我认为)操作系统管理HLS脱机播放文件的特殊方式而无法使用。它们打包为.movpkg

任何人都有上述经验并可以使用吗?

当前会话的设置如下:

private lazy var avAssetDownloadSession = AVAssetDownloadURLSession(configuration: downloadConfig, assetDownloadDelegate: self, delegateQueue: .main)
private let downloadConfig: URLSessionConfiguration

init() {
    self.downloadConfig = URLSessionConfiguration.background(withIdentifier: "DownloadConfig")
    self.downloadConfig.httpMaximumConnectionsPerHost = 1
}

private func startDownload(for asset: AVURLAsset) {
    guard let downloadTask = avAssetDownloadSession.makeAssetDownloadTask(asset: asset, assetTitle: "Test", assetArtworkData: nil, options: nil)
        else { return }

    downloadTask.taskDescription = "Test task description"
    downloadTask.resume()
}

委托方法都可以正确触发,因此下载部分没有问题。

2 个答案:

答案 0 :(得分:0)

Adding meta-data to video in iOS链接可能会有所帮助。

答案 1 :(得分:0)

不支持修改下载的movpkg。服务器上的版本中还必须存在任何元数据。