根据宽高比缩放视频视图

时间:2017-04-22 13:54:04

标签: ios swift

我想在具有不同屏幕尺寸的设备上缩放视频流。发件人的视频大小也可能不同。

我现在所拥有的代码:

public func videoView(_ videoView: RTCEAGLVideoView, didChangeVideoSize size: CGSize) {
        // scale by height
        let w = renderer.bounds.height * size.width / size.height
        let h = renderer.bounds.height
        let x = (w - renderer.bounds.width) / 2
        renderer.frame = CGRectMake(-x, 0, w, h)
    }

渲染器是渲染视频的视图。这会缩放,但不是以正确的方式。视频的某些部分丢失,高度很好。但宽度是我所理解的。

是否有可能在不失去宽高比的情况下实现全屏显示视频(在接收器端)的解决方案?

1 个答案:

答案 0 :(得分:2)

尝试使用AVMakeRect(aspectRatio:insideRect)。此方法查找保留指定rect中的aspectRatio的最小rect。

您可以阅读更多相关信息here

通常,您会将UIScreen边界指定为insideRect:参数,并在aspectRatio中指定媒体的尺寸。可能存在矩形略小于UIScreen大小的情况。在这种情况下,我建议使用名为letter boxing

的技术