昨天到今天处理一个环信视频通话的问题,过程很痛苦,所以写下解决方法mark一下。
问题:用环信做1v1视频通话,通话过程中对方关闭了摄像头,我这边的对方视频图像应该是变黑的,安卓没问题,但ios没有变黑,而是卡在最后一帧不动了。
解决方法:找到对方关闭摄像头时我方收到的通知,创建一个黑色的view覆盖在对方的视频view上就可以了。
1.环信账号登录成功后,需要进行音视频通话功能的初始化,设置监听类
[[EMClient sharedClient].callManager addDelegate:self delegateQueue:nil];
2.这里遵循的协议是:EMCallManagerDelegate
这个协议代理的方法有很多,而对方关闭/开启了摄像头,我们在这里收到消息:
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];
}
}