在我在这里发布大量代码之前,场景如下:

  • 使用基于 WWDC 的 AVEditDemo 的代码,我使用标准控件在纵向拍摄电影。
  • 我使用与使用 Core Animation 的 AVEditDemo 中的代码相同的代码对视频进行后期处理。

  • 当我使用相机应用程序播放生成的视频时,它旋转了 90 度,不再是“纵向”(现在是横向)并被压扁。 (长宽比好像换了,宽度->高度&高度->宽度。

    花了很多时间在这上面,我不知所措。

    所需的结果是与捕获的原件相同的电影。 (最终带有动画叠加层)。

    要查看实际效果,只需从 Apple 下载并运行 AVEditDemo,将 Title 设为“ON”并导出电影。

    最佳答案

    我想简短的回答是这样的:

    处理原始视频时,您要检索“preferredTransform”:

    AVAssetTrack *sourceVideo = [[sourceAsset tracksWithMediaType:AVMediaTypeVideo]lastObject];
    CGAffineTransform *preferredTransform = [sourceVideo preferredTransform];
    

    然后在编写最终视频时,您将执行类似以下操作:
    AVMutableComposition *composition = [AVMutableComposition composition];
    
    AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo
         preferredTrackID:kCMPersistentTrackID_Invalid];
    AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio
         preferredTrackID:kCMPersistentTrackID_Invalid];
    [compositionVideoTrack setPreferredTransform:preferredTransform];
    

    关于iphone - 导出捕获的电影仅在横向模式下播放,并且是旋转的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5065597/

    10-13 02:23