Как сделать снимок экрана с AVPlayer в iOS Swift ⇐ IOS
-
Anonymous
Как сделать снимок экрана с AVPlayer в iOS Swift
func getVideoScreenShot(url:URL? = nil,viewToCapture:UIView) -> UIImage?{ если пусть URL = URL { пусть актив = AVAsset (url: URL) пусть imageGenerator = AVAssetImageGenerator (актив: актив) imageGenerator.requestedTimeToleranceAfter = CMTime.zero imageGenerator.requestedTimeToleranceBefore = CMTime.zero imageGenerator.appliesPreferredTrackTransform = true если let player = getCurrentPlayer(view: viewToCapture) { если отпустить большой палец: CGImage = попробовать? imageGenerator.copyCGImage(at: player.currentTime(), factTime: ноль) { //print("изображение видео успешно выполнено") пусть кадр = UIImage (cgImage: большой палец) UIGraphicsBeginImageContextWithOptions (canvasSize!, false, UIScreen.main.scale) Frame.draw(in: CGRect(x: 0, y: 0, ширина: CanvasSize!.width, высота: CanvasSize!.height)) пусть newImage = UIGraphicsGetImageFromCurrentImageContext() вернуть новое изображение } }еще{ } } вернуть ноль } Мне нужно уместить любое видео в заданном соотношении 9:16. Я пытаюсь получить снимок экрана с представлением, содержащим AVPlayer View. Я получаю снимок экрана идеально для портретного видео, но столкнулся с проблемой сжатия изображения в альбомном видео. Было бы здорово, если бы кто-нибудь помог это выяснить.
Вывод при портретном видео:
Портрет_видео_скриншот
Выход при альбомном видео:
Пейзажный_видео_скриншот
func getVideoScreenShot(url:URL? = nil,viewToCapture:UIView) -> UIImage?{ если пусть URL = URL { пусть актив = AVAsset (url: URL) пусть imageGenerator = AVAssetImageGenerator (актив: актив) imageGenerator.requestedTimeToleranceAfter = CMTime.zero imageGenerator.requestedTimeToleranceBefore = CMTime.zero imageGenerator.appliesPreferredTrackTransform = true если let player = getCurrentPlayer(view: viewToCapture) { если отпустить большой палец: CGImage = попробовать? imageGenerator.copyCGImage(at: player.currentTime(), factTime: ноль) { //print("изображение видео успешно выполнено") пусть кадр = UIImage (cgImage: большой палец) UIGraphicsBeginImageContextWithOptions (canvasSize!, false, UIScreen.main.scale) Frame.draw(in: CGRect(x: 0, y: 0, ширина: CanvasSize!.width, высота: CanvasSize!.height)) пусть newImage = UIGraphicsGetImageFromCurrentImageContext() вернуть новое изображение } }еще{ } } вернуть ноль } Мне нужно уместить любое видео в заданном соотношении 9:16. Я пытаюсь получить снимок экрана с представлением, содержащим AVPlayer View. Я получаю снимок экрана идеально для портретного видео, но столкнулся с проблемой сжатия изображения в альбомном видео. Было бы здорово, если бы кто-нибудь помог это выяснить.
Вывод при портретном видео:
Портрет_видео_скриншот
Выход при альбомном видео:
Пейзажный_видео_скриншот
Мобильная версия