В моем приложении есть камера, которая может изменять ориентацию.
Первоначально ориентация камеры устанавливается исходя из текущей ориентации устройства.
captureSession.addOutput(videoOutput!)
cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer?.connection?.videoOrientation = AVCaptureVideoOrientation(rawValue: UIDevice.current.orientation.rawValue) ?? .portrait
При повороте я меняю ориентацию камеры.
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: nil) { _ in UIView.setAnimationsEnabled(true) }
UIView.setAnimationsEnabled(false)
super.viewWillTransition(to: size, with: coordinator)
Logger.Log("VIEW WILL TRANSITION")
if let videoOrientation = AVCaptureVideoOrientation(rawValue: UIDevice.current.orientation.rawValue) {
Logger.Log("videoOrientation updated")
cameraPreviewLayer?.connection?.videoOrientation = videoOrientation
}
cameraPreviewLayer?.frame.size = size
}
После завершения записи я передаю URL видео на AVPlayer. И вы можете видеть, что проигрыватель воспроизводит видео в неправильной ориентации.
if let _ = link {
let player = AVPlayer(url: link!)
self.player = player
self.player?.play()
}
Например, так я делаю запись в альбомной ориентации.
* +1012 *
И я получаю следующий результат. Хотя результат должен выглядеть наоборот.
На сервере он также хранится в неправильной ориентации.
Я смотрел этот вопрос . Но похоже я уже назначаю ориентацию при записи.
Я тоже смотрел этот вопрос . Я пытался увидеть, отличается ли видео, воспроизводимое плеером, в разных ориентациях. Но я всегда получаю один и тот же результат.
func playLink(){
if let _ = link {
let player = AVPlayer(url: link!)
self.player = player
self.player?.play()
}
let videoAssetTrack = self.player?.currentItem?.asset.tracks(withMediaType: .video).first
let videoTransform = videoAssetTrack?.preferredTransform
Logger.Log("videoTransform = \(videoTransform)")
}
videoTransform = Необязательный (__ C.CGAffineTransform (a: 0,0, b: 1,0, c: -1,0, d: 0,0, tx: 1080,0, ty: 0,0))
Помогите мне пожалуйста, что я должен сделать, чтобы получить правильный результат на выходе?