以正常FPS保存Slo-Mo视频



我有一个由Slo-Mo视频制作的AVMutableComposition。在AVPlayer中,它以正确的速度播放,因为我已经使用PHVideoRequestOptions.Original从照片中请求了它,其中不包括视频的Slo-Mo部分。然而,导出可变合成将以完整的FPS导出,如果FPS过高,则会导致Slo-Mo返回。

如何导出帧速率为30的视频?有没有一种特定的文件类型不包括慢动作或其他方式

我发现了两个(糟糕的(解决方案:

  1. AVAssetExportSession设置为AVAssetExportPresetMediumQuality或更低将导致帧速率下降,但质量也将更差。不好
  2. AVAssetExportSession.videoComposition设置为帧持续时间为CMTimeMake(1, 30)的视频合成,但导出具有该帧持续时间的视频确实需要很长时间,这也不好。我不知道是什么原因花了这么长时间

根据Apple DTS的说法,目前最好的解决方案是我提到的数字2。这里有更详细的信息:

        let videoComposition = AVMutableVideoComposition(propertiesOfAsset: mutableComposition)
        videoComposition.frameDuration = CMTimeMake(1, 30) // Changes FPS to 30
        let exportSession = AVAssetExportSession(asset: mutableComposition, presetName: AVAssetExportPresetHighestQuality)
        exportSession?.videoComposition = videoComposition
        exportSession?.outputURL = temporaryURL
        exportSession?.outputFileType = AVFileTypeMPEG4                     
        exportSession?.exportAsynchronouslyWithCompletionHandler({
            // Handling the export
        })

使用视频合成导出似乎比不使用视频合成需要更多的时间,但我已经按照Apple DTS的建议提交了一份关于改善这种情况的附魔请求。

相关内容

  • 没有找到相关文章

最新更新