iOS:调整大小/裁剪录制的视频

neb*_*ebs 6 iphone video resize avfoundation ios

调整用户在 iphone 上录制的视频大小的最佳方法是什么?

我目前可以通过两种方式获取视频数据:

1) 获取UIImagePickerController视频录制后的文件 URL

2)获取视频的帧,因为它是由一个发送的 AVCaptureSession

对于 1) 我需要一些可以读取 .mov h.264 文件并吐出单个帧的东西。有这样的事情吗?

对于 2)我想为每一帧获取一个 UIImage,调整图像大小,然后使用类似AVAssetWriter. 但这似乎是一个非常密集的操作,我想知道是否有更好的方法来解决这个问题。

调整视频大小以调整每个单独帧的大小然后重新编译视频的一般想法是什么?或者有没有办法直接调整整个视频的大小?

我基本上只需要用户录制视频,然后将该视频的大小调整为 320x320,无需花哨的编辑。

感谢您的任何帮助,您可以提供。

编辑: 也许“调整大小”是错误的词。我真的只需要裁剪视频,使其从 480x360 变为 320x320。此外,这种裁剪不需要实时发生,我可以在录制视频后进行。

pix*_*ion 5

如果有人遇到这个问题,我发现如果你使用 AVMutableVideoComposition 和 AVMutableComposition,你可以使用 AVFoundation 来做到这一点。然后在视频合成上设置 renderSize,这将影响视频的输出大小。然后您使用 AVMutableVideoCompositionLayerInstruction 将视频定位在您想要的位置。这是一个很好的文章在这里就开始使用这些类和他的例子项目已注释掉的代码在最后导出它。


Tho*_*sRS 3

替代方案 2 无法实时运行。

对于替代方案 1,请使用AVAssetExportSession通过所需预设之一进行初始化 - 例如AVAssetExportPreset640x480

进行实验AVAssetExportPresetLowQualityAVAssetExportPresetMediumQualityAVAssetExportPresetHighestQuality来获得其他分辨率。

请注意,视频文件的宽高比通常为 16:9(或 4:3),因此 320x320 不是有效的选项。没有充分的理由将大小调整为支持的分辨率以外的分辨率,除非您计划分发到其他手机,在这种情况下可以使用服务器端转码。