ios - 是否有每秒获取 10 帧视频的功能?
问题描述
我正在尝试从imagePickerController
. 我使用这个功能,但从 0.1s -> 1s 的图像是相同的,从 1.1 到 2s 也是。有什么办法吗?这是我的功能:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: true)
let videoURL = info[UIImagePickerController.InfoKey.mediaURL] as! URL
getAllFrames(videoURL)
}
var frames:[UIImage] = []
private var generator:AVAssetImageGenerator!
func getAllFrames(_ videoUrl: URL) {
let asset:AVAsset = AVAsset(url: videoUrl)
let duration:Double = CMTimeGetSeconds(asset.duration)
self.generator = AVAssetImageGenerator(asset:asset)
self.generator.appliesPreferredTrackTransform = true
var i: Double = 0
repeat {
self.getFrame(fromTime: i)
i = i + 0.1
} while (i < duration)
self.generator = nil
}
private func getFrame(fromTime:Double) {
let time:CMTime = CMTimeMakeWithSeconds(fromTime, preferredTimescale: 600)
let image:CGImage
do {
try image = self.generator.copyCGImage(at:time, actualTime:nil)
} catch {
return
}
self.frames.append(UIImage(cgImage:image))
}
还是我需要提高视频质量?感谢帮助。
解决方案
推荐阅读
- vim - 用 Vim Goyo 写作时有没有办法去除波浪线?
- javascript - 如果您 json_encode 返回已经是 JSON 的 api 数据会发生什么
- python - pyttsx3.init() 会导致程序崩溃,出现“输入不足”之类的错误。我该如何解决?
- flutter - Flutter中Dialog内的内容对齐?
- sqlite - 如何在另一个字符串中找到一个字符串?
- php - Laravel:此集合实例上不存在属性 [名称]
- json - 如何使用可用的属性从 json 中检索特定数据
- java - 如何根据 Jenkins 的条件运行 Maven 测试类
- php - 上传到服务器时更改文件的文件名
- json - Flutter DropDownButton 使用 FutureBuilder 进行 JSON 响应