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

标签 ios swift avassetwriter avasset avurlasset

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

我想在下载完成之前或之后在 Assets 的 metadata 属性中保存一些自定义信息,但它是只读的。我尝试过使用 AVAssetExportSessionAVAssetWriter 等,但由于(我认为)操作系统管理 HLS 离线播放文件的特殊方式,都没有奏效。它们被打包为 .movpkg

有没有人有上述经验并让它发挥作用?

session 当前设置如下:

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()
}

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

最佳答案

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

关于ios - 通过 AVAssetDownloadTask/Session 下载后如何更新 AVURLAsset 的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731720/

相关文章:

ios - 如何在 IOS 中查找照片 Assets 的标识符

ios - 即使使用 reloadData,UICollectionView 也不会重新加载搜索结果

objective-c - 从 CIImage 创建 CVPixelBufferRef 以写入文件

swift - 如何从视频文件 Cocoa Swift 获取图像缓冲区数组

swift2 - iOS CVPixelBufferCreate在swift 2中泄漏内存

ios - 在不上传 dsym 的情况下删除 Fabric missing dsym 警告消息

ios - 永远重复显示标签中的文本数组

ios - WatchKit 的用户定义设置

Swift 和预制件?

ios - 与 AVFoundation 有点混淆