【发布时间】:2018-05-14 01:33:10
【问题描述】:
我需要播放视频的特定部分(例如,从 10 秒到 20 秒)。
所以我使用带有自定义标题范围的Alamofire 来下载视频的这一部分:
Alamofire.download(videoUrl,
method: .get,
headers: ["Range":String(format: "bytes=%d-%d", startByte, endByte)],
to: destination).response { (response) in
completionHandler(response.destinationURL)
}
到目前为止一切顺利,我可以看到下载的文件。
但是当我尝试播放它时,avplayer 将无法做到这一点,我正在使用
videoAsset.loadValuesAsynchronously(forKeys: [ObserverContexts.urlAssetDurationKey, ObserverContexts.urlAssetPlayableKey])
异步加载特定键,但无法加载持续时间状态:
let durationStatus = self.videoAsset.statusOfValue(forKey: ObserverContexts.urlAssetDurationKey, error: &durationError)
guard durationStatus == .loaded else {
Logger.log.error("durationStatus not loaded: \(self.videoId)")
self.delegate?.onLoadError(error: . durationStatusNotLoaded)
return
}
所以触发了这个错误,我无法播放视频。
我不是视频文件的高手,但我认为视频文件有一个标题,部分下载会破坏这个标题,播放器无法播放。
因此,任何建议或想法(即使是最简单的)都将不胜感激。
tnx 提前。
编辑:视频标题肯定有问题,如果我从视频开始 10 秒开始下载,视频会播放 10 秒,但是结束视频时间或持续时间错误,我该如何解决?
【问题讨论】:
标签: swift3 alamofire avplayer video-processing video-encoding