Как правильно сориентировать несколько видеодорожек (снятых фронтальной и задней камерами) перед объединением или во время?

В моем приложении пользователь может снимать несколько видео спереди или сзади. Мне нужно объединить их все в одно видео. Ниже то, что я пробовал:

проблема в том, что обратная или передняя ориентация ориентирована не так, как оригинал (поскольку они могут быть перевернуты или перевернуты...)... это либо передняя, ​​либо задняя камера в зависимости от угла поворота основной композиции. .

Как это исправить??

Как это сделать?

 func merge(arrayVideos:[AVAsset], completion:@escaping (URL?, Error?) -> ()) {

  let mainComposition = AVMutableComposition()
  let compositionVideoTrack = mainComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
  compositionVideoTrack?.preferredTransform = CGAffineTransform(rotationAngle: .pi/4)

  let soundtrackTrack = mainComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)

    var insertTime = CMTime.zero

  for videoAsset in arrayVideos {
    try! compositionVideoTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration), of: videoAsset.tracks(withMediaType: .video)[0], at: insertTime)
    try! soundtrackTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration), of: videoAsset.tracks(withMediaType: .audio)[0], at: insertTime)

    insertTime = CMTimeAdd(insertTime, videoAsset.duration)
  }

  let outputFileURL = URL(fileURLWithPath: NSTemporaryDirectory() + "merge.mp4")

  let fileManager = FileManager()
  try? fileManager.removeItem(at: outputFileURL)

  let exporter = AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetHighestQuality)

  exporter?.outputURL = outputFileURL
  exporter?.outputFileType = AVFileType.mp4
  exporter?.shouldOptimizeForNetworkUse = true

  exporter?.exportAsynchronously {
    if let url = exporter?.outputURL{
        completion(url, nil)
    }
    if let error = exporter?.error {
        completion(nil, error)
    }
  }
}

person Community    schedule 25.08.2020    source источник
comment
Возможно, вам следует применить правильное преобразование к своим видео при объединении, посмотрите этот ответ: video/63348323#63348323" title="экспорт временной задержки с avasetexportsession приводит к черному видео"> stackoverflow.com/questions/46243096/   -  person iUrii    schedule 26.08.2020