根据宽高比缩放视频视图

da1*_*bi3 5 ios webrtc 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 = CGRect(x: -x, y: 0, width: w, height: h)
    }
Run Code Online (Sandbox Code Playgroud)

渲染器是渲染视频的视图。它可以缩放,但方式不正确。视频有些部分丢失了,高度还好。但宽度被裁剪成我所理解的。

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

Mr.*_*hog 6

尝试使用AVMakeRect(aspectRatio:insideRect). 此方法查找在指定矩形内保留纵横比的最小矩形。

你可以在这里读更多关于它的内容

一般来说,您将指定UIScreen边界作为insideRect:参数,并在 中指定媒体的大小aspectRatio。在某些情况下,矩形可能会比您的尺寸稍小UIScreen。在这种情况下,我建议使用称为信箱的技术