RTCVideoTrack显示拉伸的WebRTC

时间:2018-06-05 12:02:27

标签: ios iphone uiview webrtc

我正在使用核心 WebRTC框架并在IPhone全屏模式下呈现我的本地流。不幸的是,我的视频显示拉伸,并没有显示在相机应用程序中的视频视图。

我尝试在adaptOutputFormatToWidth中添加宽高比,并使用NSDictionary* mandatoryConstraints; /* want to calculate aspect ratio dynamically */ NSString *aspectRatio = [NSString stringWithFormat:@"%f",(double)4/3]; if (aspectRatio) { mandatoryConstraints = @{ kRTCMediaConstraintsMaxAspectRatio: aspectRatio}; } RTCMediaConstraints *cameraConstraints = [RTCMediaConstraints alloc]; cameraConstraints = [cameraConstraints initWithMandatoryConstraints:mandatoryConstraints optionalConstraints:nil]; RTCAVFoundationVideoSource *localVideoSource = [peerFactory avFoundationVideoSourceWithConstraints:mediaConstraint]; [localVideoSource adaptOutputFormatToWidth:devicewidth:devicewidth fps:30]; 方法修复输出。

<div id="a1"></div>

在下方链接中,会显示相机视频视图与我的应用调用视频视图之间的差异

https://drive.google.com/file/d/1HN3KQcJphtC3VzJjlI4Hm-D3u2E6qmdQ/view?usp=sharing

2 个答案:

答案 0 :(得分:2)

我相信您正在使用 RTCEAGLVideoView 渲染视频,这需要调整大小,您可以使用 RTCMTLVideoView 代替 RTCEAGLVideoView 。< / p>

如果要使用RTCEAGLVideoView,请使用RTCEAGLVideoViewDelegate方法。

- (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size;

此方法将为您提供正确的视频大小。

答案 1 :(得分:0)

(对于 Swift)-> 使用 RTCMTLVideoView 并设置 videoContentMode

#if arch(arm64)
let renderer = RTCMTLVideoView(frame: videoView.frame)
renderer.videoContentMode = .scaleAspectFill
#else
let renderer = RTCEAGLVideoView(frame: videoView.frame)
#endif