Ios 不同纵横比的AVFoundation格式

Ios 不同纵横比的AVFoundation格式,ios,swift,avfoundation,Ios,Swift,Avfoundation,我正在为我的相机应用程序使用AVFoundation。我使用实时视频帧抓取图片使用AVCaptureVideoDataOutput。 现在,我会过滤设备支持的所有格式,然后选择格式支持的最高分辨率 例如,我在iPhone8/7上获得了4032*3024分辨率支持的格式,我使用它作为活动格式。我从视频支持的FramRanges中过滤 我想知道如何以4:3的分辨率渲染视频,这样我就可以看到相机侧面的黑条 我确实玩过AVCaptureVideoPreviewlayer属性,发现如果我使用resizeA

我正在为我的相机应用程序使用AVFoundation。我使用实时视频帧抓取图片使用AVCaptureVideoDataOutput。 现在,我会过滤设备支持的所有格式,然后选择格式支持的最高分辨率

例如,我在iPhone8/7上获得了4032*3024分辨率支持的格式,我使用它作为活动格式。我从视频支持的FramRanges中过滤

我想知道如何以4:3的分辨率渲染视频,这样我就可以看到相机侧面的黑条

我确实玩过AVCaptureVideoPreviewlayer属性,发现如果我使用resizeAspectFill,它会显示摄像头全屏,但如果我只是不指定,它会在旁边添加黑条。(我假设.resize是默认属性),但我不确定这是否是显示/隐藏黑条的正确方法

在我看来,这是可行的,因为目前我选择支持的最高分辨率格式,在本例中是4032*3024,因为它的纵横比是4:3

基本上,我想确保在一些场景中以4:3格式大小视图显示视频,其中有黑条,在一些场景中是全屏显示,我已经在做了

开放性问题

  • 是否有任何方法可以确保我可以始终显示4:3纵横比的视频源

  • 如何以4:3显示黑色条

  • 在展示了黑条之后,我如何在没有黑条的情况下获得相机区域


  • 谢谢

    到目前为止,我想添加resizeAspectFill,而不是添加添加/隐藏黑条的唯一方法,这就是我到目前为止学到的。但如果是这样的话,我如何计算没有黑条渲染的相机面积呢?我尝试从AVVideoPlayerLayer获取边界,但我发现无论我是否添加黑条,它都会发送667*315。到目前为止,我猜添加resizeAspectFill并不是添加/隐藏黑条的唯一方法,这就是我学到的。但如果是这样的话,我如何计算没有黑条渲染的相机面积呢?我尝试从AVVideoPlayerLayer获取边界,但我发现无论我是否添加黑条,它都会发送667*315。