无法呈现大小超过640x640的视频

时间:2015-02-18 07:44:43

标签: ios objective-c render avassetexportsession avmutablecomposition

我正在使用AVAssetExportSession导出保存在文档目录中的视频。我希望对视频应用CALayer,因此我正在使用AVMutableVideoComposition并设置必要的AVMutableVideoCompositionInstruction和视频导出。

我的问题是,原始视频的分辨率为1920x1080分辨率现在,当我通过将视频合成的渲染大小设置为1920x640导出此视频时,它为我提供了一个大小为640x360的视频。

我尝试将渲染大小设置为较小的值,如300x300,当然我通过裁剪额外的内容得到大小为300x300的导出视频。然后我尝试将rendersixe设置为700x700,结果为640x640视频。

我能理解的是它根据我们设置的渲染大小保持纵横比,因此当我将大小设置为1920x1080时,它会提供630x360视频,保持16:9的ratin。同样,当我将尺寸设置为700x700时,会产生尺寸为640x640且宽高比为1:1的视频。

问题

我希望视频大小与原始大小相同。但是当我将mutablevideoComposition的大小设置为原始视频轨道的naturalSize时,它将我限制在640x640以下(如果大小超过640x640)。

这是一种已知行为吗?或者我错过了什么。如果是已知行为,则可以使用其他方式导出视频,其原始大小或大小超过640x640。

帮助将被深深地诠释。感谢您的期待。

2 个答案:

答案 0 :(得分:2)

我知道了。这是一个简单的错误。我用AVAssetExportPreset640x480而不是AVAssetExportPreset1920x1080初始化导出会话。

答案 1 :(得分:2)

当您设置预设时,AVExportSession会保持视频的宽高比大于您的情况下的预设,这是您在视频为1920x1080时获得640x360的方式,从而保持宽高比。< / p>