我正在使用核心 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
答案 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