iOS - 在设备处于纵向模式时以横向方式捕获视频

时间:2017-07-16 13:12:44

标签: ios avfoundation avcapturesession landscape-portrait

当设备处于纵向模式时,是否可以在横向捕捉视频?

这样的事情:
enter image description here

实际上我需要的是以纵向捕捉,但宽度为>高度,我不希望用户旋转设备,但我确实希望捕获像横向模式更广泛的图片。

将预览图层框架更改为宽(宽度>高度)当然不够。

我尝试更改预览图层的视频方向,但这会旋转图片,这不是我想要的。

previewLayer.connection.videoOrientation = .landscapeRight  

是否有意义?

3 个答案:

答案 0 :(得分:1)

不可能,因为您必须物理旋转相机。

您可以将输出视频裁剪为您想要的任何宽高比。

然而,这将使您的垂直分辨率最多为您当前的水平分辨率。

除了缩小你的视野外。

如果您仍想裁剪视频以实时模拟这种“小型横向模式”,我建议您使用库中的“GPUImageCropFilter”GPUImage

答案 1 :(得分:0)

您可以,您需要使用AVAssetWriter并设置输出视频的尺寸。

然而,请记住,你将会降低质量。如果相机方向是纵向,那么您收到的是一个视频(为了论证)720H x 360W。

所以你想要制作这样的风景,如果保留宽高比,你最终会得到一个180H x 360W的视频(通过裁剪输入)。

请记住,相机看到的内容,发送到预览图层的内容以及录制到文件的内容之间存在差异 - 它们都可以彼此独立(您谈到了更改预览图层框架,请记住与你写的视频无关。

答案 2 :(得分:0)

您是否尝试过设置重力& previewLayer的界限?

var bounds:CGRect = self.view.layer.bounds
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer?.bounds = bounds
previewLayer?.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))