3

我正在实现一些 HLS/m3u8 流的离线播放。一切都按预期工作AVAssetDownloadURLSession,使用它从流 url 中AVAssetDownloadTasks给出一个。AVURLAsset

我想metadata在下载完成之前或之后在资产的属性中保存一些自定义信息,但它是只读的。我曾尝试使用AVAssetExportSession,AVAssetWriter等,但由于(我认为)操作系统管理 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()
}

委托方法都在适当地触发,所以下载部分没有问题。

4

2 回答 2

0

这个在 iOS 链接中添加元数据到视频可能会有所帮助。

于 2018-10-25T16:54:57.610 回答
0

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

于 2020-06-13T00:50:40.470 回答