当前位置: 首页 > Web前端 > HTML

融合通信常见问题三月刊-云信小课堂

时间:2023-03-29 13:02:27 HTML

《融合通信常见问题》每月月末与大家见面。过程中容易出错的问题和解题思路,分享融合通信领域的前沿资讯和技术干货,提高你的开发效率和速度,为你的进阶之路贡献一份力量。在此处查看内容概述!避开别人踩过的坑!Mac端使用Type-C耳机别人听不到我的声音;声音从蓝牙耳机切换到外置扬声器;我退到后台一会儿再说话,对方听不到声音;iOS端调用组件初始化时APP卡顿;小程序在说话,Native听不见;发送信息失败;由于加密模式无法上架谷歌商店;启动应用后,应用使用不顺畅……这些知识点你知道吗:直播场景和通讯场景有什么区别?SDK支持的QoS策略是什么意思?如何处理静音问题?如何处理回声问题?这些干货不要错过!网易会议组件正式开源网易会议开源移动端和桌面篇RTC音频质量评测与保证Gitlab-ci替换webhook触发器JenkinsjobSQLite介绍20万字《网易智企技术合辑》重磅发布:当Mac端??插入Type-C耳机和说话,对方听不见。易错程度:????错题原因:Mac适配Type-C耳机有问题。Mac端插上Type-C耳机后,说话时系统声音面板输入电平很低或几乎没有。而在这种情况下,市面上其他通话软件的效果是一样的。所以判断是因为Mac没有很好适配Type-C耳机导致Type-C耳机无法正常使用。解题思路:建议更换其他耳机或使用系统麦克风通话。难点二:音视频发送音频流,接收端听到声音异常,从蓝牙耳机播放切换到外接播放。接收端一开始听到的声音是通过蓝牙耳机播放的。调用enableLocalAudio设置为true后,声音异常改为外接播放。再次调用enableLocalAudio并设置为false后,声音通过蓝牙耳机恢复播放。易错程度:???错题原因:iOS音频是通过AVAudioSession管理的,AVAudioSession是一个单例类。不仅SDK可以调用,客户业务层也可以修改AVAudioSession的option。这个问题现象与调用SDK的方法有关,实际上是在调用SDK方法时,客户业务层调用了修改AVAudioSession的选项,将其修改为外部类型AVAudioSessionCategoryOptionDefaultToSpeaker。解题思路:业务层使用AVAudioSession时,注意管理好业务层的调用。通过SDK输出音频时避免修改AVAudioSession。难点3:Android端发送音频/视频/纯音频,退到后台一会再说话,对方听不到声音。易错程度:???错题原因:音视频收藏退出后台后被系统限制。长时间登录后台,收藏属于高危行为,极有可能被系统限制,具体取决于用户对APP的设置以及系统对该行为的限制。有关系统限制的详细信息,请参阅行为更改(https://developer.android.com/about/versions/pie/android-9.0-changes-all);解题思路:在锁屏或者app返回后台之前,建议用户先开启前台服务,这样app才能正常工作(继续采集声音和视频画面),终止前台服务在退出锁定屏幕或返回前台之前;但是,需要有一个预期:由于高版本的Android系统对退出后台继续采集数据的敏感操作要求非常严格,因此前台服务的保活也是有风险的。考虑如何处理异常。疑难问题4:iOS端调用组件初始化时,APP偶尔卡顿。易错程度:???错误问题原因:调用组件内部初始化与老版本RTCSDK互锁,导致卡顿。解题思路:根据官网文档,在pod中导入NERtcCallKit时,指定NERtcSDK版本为4.2.120。示例如下:pod'NERtcCallKit','1.5.0'pod'NERtcSDK','4.2.120'4.2.120版本是适配call组件的稳定版本,pod拉取的NERtcSDK没有指定该版本不是稳定版本。疑难问题5:小程序与Native通话时,小程序说话,Native听不到。易错程度:???错误问题原因:小程序调用publish时传参错误。在小程序端发布的时候,需要传入要发布的媒体类型,但是在传入参数的时候,认为传入视频就意味着音频和视频都会发布,这是错误的。解题思路:发布音视频流时,publish中的mediaType要设置为''(空串);发布纯视频流时,mediaType应设置为video;发布纯音频流时,mediaType需要设置为audio。IM即时通讯问题6:以下两种场景发送失败,报error参数错误:1.再次sendMessage发送已经发送过的图片和文件消息;2.直接forwardMessage发送新建的消息。易错程度:???错题原因:1.创建文件消息时,可以选择创建的相册路径和数据。创建时会赋值给文件NIMMessageObject的私有属性sourceImage、sourceFilepath和sourceData。发送消息时,这些私有属性将为空。如果再次调用sendmessage方法,会报errorparametererror,因为找不到这些参数;2.ForwardMessage发送消息,SDK会解析messageObject的encodeContent属性,获取messageObject的对象数据并转发,如果是新创建的消息,调用forward方法Sending会报error参数错误,因为找不到messageObject的encodeContent。解题思路:1、如果这个场景是转发场景,需要调用转发接口forwardMessage,或者先调用makeForwardMessageFromMessage构造转发的消息,然后sendMessage发送。如果要多次发送相同内容的消息,可以按照创建消息的流程创建一个消息对象并发送一次,避免发送完后不重新创建就再次发送同一个消息对象。2、新创建的消息直接使用sendMessage发送,避免调用转发接口forwardMessage发送。难点七:当客户需要上架谷歌商店时,会检测到使用了不安全的加密方式的问题,导致无法上架。易错程度:???错题原因:谷歌不支持AES/ECB/PKCS5Padding的加密方式。解题思路:该加密方式在IMSDK8.11.5之后的版本中被去除,可以升级。排查问题八:应用启动时,应用不流畅。查看logcat日志发现,经常打印IM相关日志。易错程度:???错题原因:可能是阻塞查询本地数据的接口被频繁调用。这种类型的接口将查询本地数据库。如果在UI线程中循环调用,会出现性能问题,导致UI卡顿。可以在logcat日志中过滤TransExec:executeTransaction关键字,确认是否有频繁调用IM接口,需要特别注意“xxxBlock();”等同步方式。解决思路:确认业务层的实现是否有问题,通过调整业务层的逻辑避免接口频繁调用。查看api,确认是否有批量查询的方法,避免循环调用。例如TeamService.queryTeamBlock可以更改为TeamService.queryTeamListBlock。相反,异步调用该方法,或者在子线程中调用它以防止UI卡住。2、知识加油站直播场景和交流场景有什么区别?NERTCSDK通过setChannelProfile方法设置实时音视频通话的场景。您可以使用此方法将房间设置为通讯场景或直播场景。默认是通讯场景。网易云信会针对不同的实时音视频场景设置不同的优化策略,比如用户角色、默认视频编码码率等。通讯场景设置推荐用于一对一或多人音视频通话场景,直播场景设置推荐用于语音聊天室、小班课、主播PK等互动直播场景。用户角色为了方便用户权限管理,在直播场景实现更细化的权限控制,音视频通话2.0支持在直播场景设置用户角色。用户角色可以设置为主播或观众。在直播场景下,用户默认角色为主播,可以发送音视频流,配置推流任务等,用户角色可以通过setClientRole方法切换。切换到查看器后,它只能接收音频和视频流。在通话场景中,用户的默认角色是广播者。不支持将用户角色切换为旁观者。QoS策略直播场景和通信场景默认的QoS策略不同,主要有以下几个方面。现场现场。在直播场景下,NERTCSDK的QoS策略控制着重于保证画质的清晰度。所以默认情况下,在分辨率和帧率相同的情况下,直播场景的码率要高于通讯场景的码率。在弱网环境下会有一定的延迟。交流场景。在通信场景下,NERTCSDK的QoS策略控制侧重于保证音视频通话的实时性,最大限度保证低时延。在弱网络环境下,音质和画质会有所降低,以保证音视频通话流畅。SDK支持的QoS策略是什么意思?QoS:QualityofService,服务质量。当参与音视频通话的用户网络较差时,SDK会激活QoS策略,自动调整收发数据的分辨率、码率、帧率。多人音视频通话:A、B、C、D通话。对于视频数据,如果A的上行发送网络不好,或者B、C、D的下行接收网络不好,服务器会回调A并触发QoS调整A发送的数据。对于音频数据,如果A的上行发送网络不好,服务器会回调A并触发QoS调整A发送的数据;编码后的音频数据发送给B、C、D,如何处理静音问题?无声问题定义:在通话过程中或通话过程中,一方或多方听不到声音。解题思路:如下图所示,发送端和接收端之间有多个音频处理和传输过程。建议通过采集、编码、网络传输、解码、播放等各个模块来定位问题。检查采集和回放设备的使用权限。检查音视频室的连接状态。检查发布/订阅接口调用。检查扬声器/麦克风是否打开。检查静默接口调用。检查外接设备状态,如蓝牙耳机、音箱等Windows设备,需要检查驱动或使用系统自带的设备自检。如果以上内容没有问题,请联系网易云信同仁。云信技术支持将及时提供技术服务,帮助定位和解决问题。如何处理回声问题?回声问题的定义:当本端接收到音频时,扬声器播放传入的音频。排查思路:如下图,如果发送方听到本地语音,一般是接收方回声消除处理不可靠造成的。比如在人多的场景下,需要先定位到一个明显异常的receiver。通话双方设备之间的物理距离。将房间内的用户一一静音,确定回声的异常来源。如果异常源戴着耳机,则可以消除回声。提供异常来源的设备特定信息包括SDK客户端日志。请将收集到的异常来源信息提供给云信技术支持,云信技术支持将及时反馈异常处理的进度和结果。这个过程一般不需要更换SDK。3、技术+网易智慧企业发布“Easy+”开源计划,网易会议组件正式开源网易会议组件,并将在二季度开源低延迟直播技术。“易+”开源|网易会议开源移动端内容概览:网易会议组件源码已上传至GitHub。新闻、白板、直播等功能搭建了会议系统。本文主要介绍网易会议组件在网易会议移动端的实现。“易+”开源|网易会议开源:桌面端内容概述:在线会议越来越普遍,很多企业希望开发自己的会议系统,方便工作和交流;网易云信深耕通信领域多年,基于自身能力打造成熟的会议系统并开源,本文将介绍网易会议桌面的相关内容。技术干货|RTC音频质量评估与保障内容概述:会议、麦克风、音视频通话、在线教育、远程医疗等实时交互场景对RTC音频质量提出了越来越高的要求,如何提高对RTC音频的效果进行测试,建立客观、标准、可重复的评价体系,保证良好的音频传输质量,也成为当前一个比较紧迫和重要的课题。技术干货|gitlab-ci替换webhook触发Jenkinsjob内容概述:网易云信的gitlab服务器搭建在外网,而Jenkins服务器搭建在内网,所以gitlab无法直接将webhook发送给Jenkins,管道搭建使用一种第三方中继转发的方式,但是这种中继经常“罢工”。本文结合网易云信的实践,详细介绍如何使用Gitlab-ci代替webhook来触发Jenkinsjob。技术干货|SQLite简介内容概述:SQLite是世界上使用最广泛的数据库引擎。SQLite内置于所有手机和大多数计算机中,并捆绑到人们每天使用的无数其他应用程序中。本文主要介绍SQLite的相关特性。两周年福利|20万字《网易智企技术合辑》发布!内容概要:“网易智企科技+”即将迎来2岁生日。网易智企精心挑选了51篇技术文章,为每一位开发者汇集了这篇20万字的《网易智企技术合辑》!