关于环信1v1视频通话对方关闭/开启摄像头的处理

昨天到今天处理一个环信视频通话的问题,过程很痛苦,所以写下解决方法mark一下。
问题:用环信做1v1视频通话,通话过程中对方关闭了摄像头,我这边的对方视频图像应该是变黑的,安卓没问题,但ios没有变黑,而是卡在最后一帧不动了。
解决方法:找到对方关闭摄像头时我方收到的通知,创建一个黑色的view覆盖在对方的视频view上就可以了。
1.环信账号登录成功后,需要进行音视频通话功能的初始化,设置监听类


D9114B98-C33B-4347-A7F9-00D393901F5B.png
[[EMClient sharedClient].callManager addDelegate:self delegateQueue:nil];

2.这里遵循的协议是:EMCallManagerDelegate
这个协议代理的方法有很多,而对方关闭/开启了摄像头,我们在这里收到消息:


96A1A991-6838-403A-B2EC-910692432E1D.png

3.收到消息后我们就可以进行其他操作了

- (void)callStateDidChange:(EMCallSession *)aSession
                      type:(EMCallStreamingStatus)aStatus
{
    
    if (aSession.type == EMCallTypeVideo) {
        NSLog(@"实时视频");
        if (aStatus == EMCallStreamStatusVideoPause) {
            NSLog(@"中断视频");
            //这里实现的是在对方的视频view上加一个黑色遮罩
            [self.currentController isOpenBlackView:YES];
            
        }else if(aStatus == EMCallStreamStatusVideoResume){
            NSLog(@"继续视频");
            [self.currentController isOpenBlackView:NO];
        }
    }
    if ([aSession.callId isEqualToString:self.currentCall.callId]) {
        [self.currentController updateStreamingStatus:aStatus];
    }
}

你可能感兴趣的:(关于环信1v1视频通话对方关闭/开启摄像头的处理)