2017-04-22 38 views
1

我想在具有不同屏幕尺寸的設備上縮放視頻流。發件人的視頻大小也可以不同。基於長寬比的縮放視頻視圖

我有什麼至今代碼:

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

嘗試使用AVMakeRect(aspectRatio:insideRect)。此方法找到保留指定矩形內的aspectRatio的最小矩形。

你可以閱讀更多關於它here

一般你會指定UIScreen範圍爲insideRect:參數和媒體的aspectRatio大小。可能會出現這樣的情況:矩形會略小於您的尺寸UIScreen。在這種情況下,我建議使用技術letter boxing