【发布时间】:2019-07-06 06:00:57
【问题描述】:
我想对视频应用 CIFilter 并保存该过滤器应用的视频。
我正在使用 AVMutableVideoComposition(也尝试使用 AVVideoComposition)对视频应用过滤器,并且它与 AVPlayer 一起工作正常,但是当我导出过滤后的视频时,本地保存需要太多时间(20 秒视频大约需要 6-8 分钟) .请指导我做错了什么...... 谢谢!
let item = AVPlayerItem(asset: currentAsset!)
let videoComposition = AVMutableVideoComposition(asset: currentAsset!) { request in
let filter = CIFilter(name: "CIColorInvert")!
let source = request.sourceImage.clampedToExtent()
filter.setValue(source, forKey: kCIInputImageKey)
let output = filter.outputImage!.cropped(to: request.sourceImage.extent)
// Provide the filter output to the composition
request.finish(with: output, context: nil)
}
item.videoComposition = videoComposition
self.player.replaceCurrentItem(with: item)
let exporter = AVAssetExportSession(asset: item.asset, presetName: AVAssetExportPresetHighestQuality)
exporter?.videoComposition = videoComposition
exporter?.outputFileType = .mp4
let filename = "filename.mp4"
let documentsDirectory = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).last!
let outputURL = documentsDirectory.appendingPathComponent(filename)
exporter?.outputURL = outputURL
exporter?.exportAsynchronously(completionHandler: {
guard exporter?.status == .completed else {
print("export failed: \(exporter?.error)")
return
}
print("done: ",outputURL)
}
)
【问题讨论】:
-
您是否尝试为导出会话创建不同的合成实例?
-
是的,我已经分别尝试过,但没有成功。
-
您是否尝试过其他质量预设?这个问题似乎是相关的:stackoverflow.com/questions/51036125
-
我尝试了所有预设,但仅通过导出视频(无过滤器)其他预设没有导出任何内容。我不明白为什么会这样?
标签: ios swift avvideocomposition