在合并之前或期间,如何正确定向多个视频轨道在前置凸轮和背面上拍摄?

问题描述

在我的应用中,用户可以拍摄多个正面或背面的视频。我需要将它们全部合并为一个视频。下面是我尝试过的:

问题在于,背面或正面的方向与原图不同(因为它们可能会颠倒或翻转。)...其正面或背面摄像头取决于镜头的旋转角度主要成分。

我该如何解决

我该怎么做?

 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,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)
    }
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)