我想在具有不同屏幕尺寸的设备上缩放视频流。发件人的视频大小也可能不同。
我现在所拥有的代码:
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)
}
渲染器是渲染视频的视图。这会缩放,但不是以正确的方式。视频的某些部分丢失,高度很好。但宽度是我所理解的。
是否有可能在不失去宽高比的情况下实现全屏显示视频(在接收器端)的解决方案?
答案 0 :(得分:2)
尝试使用AVMakeRect(aspectRatio:insideRect)
。此方法查找保留指定rect中的aspectRatio的最小rect。
您可以阅读更多相关信息here
通常,您会将UIScreen
边界指定为insideRect:
参数,并在aspectRatio
中指定媒体的尺寸。可能存在矩形略小于UIScreen
大小的情况。在这种情况下,我建议使用名为letter boxing