当设备处于纵向模式时,是否可以在横向捕捉视频?
这样的事情:实际上我需要的是以纵向捕捉,但宽度为>高度,我不希望用户旋转设备,但我确实希望捕获像横向模式更广泛的图片。
将预览图层框架更改为宽(宽度>高度)当然不够。
我尝试更改预览图层的视频方向,但这会旋转图片,这不是我想要的。
previewLayer.connection.videoOrientation = .landscapeRight
是否有意义?
答案 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))