集成百度RTC实现音频通话遇坑指南

2023-09-04  本文已影响0人  Tomous

因为项目要实现音视频对话功能,所以采用了百度的音视频RTC,集成入口
集成iOS SDK
官方demo入口

以上都没什么好说的,集成很简单,实现视频通话也很简单,最主要的就是介绍一下我在开发中遇到的几个大坑吧

1、集成BaiduRtcRoomApi之后,在iPhone 12手机(16.6系统)上无法真机调试,出现Unable to install xxx的错误,错误信息:The code signature version is no longer supported.,解决方案

在target -> General里面找到Frameworks
如图


image.png

把红框部分都改成Do Not Embed,然后再次运行就好了

2、千万要记住,在开发过程中,如果要测试,先用两个苹果手机互相拨打视频测试,不要用一个安卓手机和一个苹果手机测试,这个坑坑了我半天时间。

bug场景:安卓手机和苹果手机互相拨打视频通话,安卓手机能看到苹果手机这边的视频画面,但是苹果手机看不到安卓手机的视频画面,打印日志,发现当安卓那边加入房间的时候,RTC_REMOTE_STREAMING_STATES_SUBSCRIBE_SUCESS这个状态并没有调用,最开始我一直以为自己的原因,后来问了他们技术人员(因为花钱了,所以有技术支持)才知道,是安卓那边的SDK里面enablePruneSignal这个参数默认是true,手动设置为false就好了,
原因:android 现在还不支持 V4 和 V2互通,这个参数为true,就是默认V4。
据说现在安卓新版本的sdk这个参数默认是false了。

3、在开发调试过程中,初始化本地用户显示视图,在iPhone 7Plus手机上能全屏显示,但是在iPhone 12上显示不全,原因是没有设置AVLayerVideoGravityResizeAspectFill这个参数,设置一下就好了
    //初始化本地用户显示视图
    RTCLocalVideoView *localView = [[RTCLocalVideoView alloc] initWithDelegate:self];
    localView.videoView.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight);
    localView.videoView.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [self.videoView addSubview:localView.videoView];
    //设置本地视频显示view
    [self.rtcRoomApi setLocalDisplay:localView];
4、如果两个iPhone手机直接无法看到对方的视频画面,那就可能是手机摄像头权限没有打开,去设置里面,重新关闭打开一下(我是遇到这样的问题了,12能看到7p的画面,7p看不到12的画面,但是7p手机上的摄像头权限也是开启的状态,关了重新开启就好了)

剩下的没啥了,到此就基本上开发完了,等后续测试吧,如果有新的坑,再续更吧!!

上一篇 下一篇

猜你喜欢

热点阅读