2022.06
「融合通信常见问题」将在每月与大家见面,该月刊主要包括错题集、知识加油站、技术加餐三大板块,汇集实践过程中的易错问题和解题思路,分享融合通信领域的前沿资讯和技术干货,为您的开发提效加速,为您的进阶之路添砖加瓦。
本期内容概览
看这里!别人踩过的坑快避开
1. 互动直播应用中,观众及连麦者的切换,涉及播放器从 CDN 拉流切换至加入 RTC 房间订阅主播音视频,用户获取直播状态为空闲。
2. 在微信浏览器上进行音视频通话,安卓微信浏览器看远端画面黑屏。
3. PC 浏览器上进行音视频通话,创建多实例之后出现登录失败、发流失败的情况。
4. App 横屏显示模式,音视频通话设置本地采集画面旋转方向,通过配置 orientationMode 设置画面方向无效。
5. 根据 message 的 deliveryState 状态显示消息的发送情况,发送消息过程中,退出聊天页面再进入聊天页面,发送的消息 deliveryState 状态是 NIMMessageDeliveryStateFailed,会显示发送失败。
这些知识点你知道吗?
1. SDK 支持的 QoS 策略是什么意思?
2. 如何根据场景选择合适的视频分辨率、帧率、码率?
这些干货也不容错过!
1. Sanitizers 系列之 address sanitizer 用法篇
2. 超分辨率技术在实时音视频领域的研究与实践
3. 给语音机器人装上盾牌——限流
4. C++ 静态反射在网易云信 SDK 中的实践
5. 深度剖析「圈组」关系系统设计
01.
错题集|
■ 音视频通话
疑难问题 1:
互动直播应用中,观众及连麦者的切换,涉及播放器从 CDN 拉流切换至加入 RTC 房间订阅主播音视频,用户获取直播状态为空闲。
易错等级:⭐⭐⭐
错题原因:
主播在互动直播过程中,重复初始化 RTC 并且每次加入的同时都设置了推流任务且taskid 不一致,导致服务器拿到 4 个相同目的地址的流任务从而获取直播状态异常。
解题思路:
在添加推流任务的时候保持 taskid 唯一,在重新进入房间的时候添加推流任务如果遇到报错 1403 重复推流任务则更新推流任务来保证推流,如果添加成功则任务成功。
疑难问题 2:
在微信浏览器上进行音视频通话,安卓微信浏览器看远端画面黑屏。
易错等级:⭐⭐
错题原因:
微信浏览器端音视频的播放被阻塞,此时浏览器并没有抛出异常给到 SDK,无法监听到。
解题思路:
在 android 微信浏览器上进行音视频通话之前,参考网易云信官方文档中 https://doc.yunxin.163.com/docs/jcyOTA0ODM/jM3NDE0NTI?platformId=50082 「直接解除自动播放受限」方案,提前引导用户完成交互行为,然后再进行音视频流的 play 操作,以规避此问题。
疑难问题 3:
PC 浏览器上进行音视频通话,创建多实例之后出现登录失败、发流失败的情况。
易错等级:⭐⭐⭐
错题原因:
创建多实例之后,使用同一个 uid 加入同一个房间导致登录失败,4.6.10 SDK 会兼容这种场把之前的用户踢出房间,发流失败也是多实例情况下,对应的 stream 没有和正确的实例绑定导致。
解题思路:
需要创建多个实例时,需要管理好每个实例对应的 uid(每个实例的 uid 都需要不相同)、监听事件以及实例上的 stream(创建stream时指定 client 字段,绑定 stream 和对应的实例),做到实例互相隔离。
■ IM 即时通讯
疑难问题 4:
App 横屏显示模式,音视频通话设置本地采集画面旋转方向,通过配置 orientationMode 设置画面方向无效。
易错等级:⭐⭐⭐
错题原因:
orientationMode 参数设置的是本地视频编码的旋转方向模式,使接收端的视频展示为指定的方向效果,是影响的对端显示方向,不影响本地显示方向。
解题思路:
如果 App 是固定横屏模式,可以在加入房间之前通过 setVideoRotationMode 方法设置本地视频画面的旋转模式,采集端和播放端的旋转模式均保持一致。
疑难问题 5:
根据 message 的 deliveryState 状态显示消息的发送情况,发送消息过程中,退出聊天页面,再进入聊天页面,发送的消息 deliveryState 状态是 NIMMessageDeliveryStateFailed,会显示发送失败。
易错等级:⭐⭐⭐
错题原因:
deliveryState 消息投递状态,是 SDK 来赋值管理的,是只读属性,用户无法赋值,初始默认状态是 NIMMessageDeliveryStateFailed 发送失败。消息发送完成之前,SDK 不会改变 deliveryState 消息状态。消息发送完成之后,如果页面没有重新从数据库取消息刷新页面会存在显示为消息发送失败的情况。
解题思路:
在消息发送过程中(还没发送完成),退出聊天页面再进入聊天页面的时候需要注意根据消息发送完成的回调来重新从本地数据库取消息记录用来展示。或者根据消息发送的生命周期(将要发送,发送完成等回调),自己在消息的扩展字段定义消息的发送状态,用来 UI 展示。
往期错题集:
音视频通话错题集:https://doc.yunxin.163.com/docs/jcyOTA0ODM/DIyNjU3NDg?platformId=50002
IM 错题集:https://doc.yunxin.163.com/docs/TM5MzM5Njk/jA5MzI4NjU?platformId=60002
02.
知识加油站|
1. SDK 支持的 QoS 策略是什么意思?
QoS: Quality of Service,服务质量。
当参与音视频通话的用户网络较差时,SDK 会启动 QoS 策略,自动调整收发数据的分辨率、码率、帧率。多人音视频通话:A、B、C、D 通话。
对于视频数据
如果 A 上行发送网络较差,或者 B、C、D 下行接收网络较差,服务器都会回调给 A 并触发 QoS,调整 A 发送的数据。
对于音频数据
如果 A 上行发送网络较差,则服务器回调给A并触发 QoS,调整A发送的数据;
如果 B、C、D 下行接收网络较差,则服务器根据 B、C、D 的网络情况重新编码音频数据发送给 B、C、D。
2. 如何根据场景选择合适的视频分辨率、帧率、码率?
视频分辨率等参数的选择根据使用场景来决定,例如老师和学生在房间内进行 1 对 1 通话,视频布局比较大,分辨率随之高一点,帧率和码率也会提高,如果是房间内有多人,那么每个视频布局会相对比较小,所以分辨率等参数可以低一点。为您推荐的场景参数如下所示:
2人视频通话场景
分辨率 320 x 240、帧率 15 fps、码率 200 Kbps;
分辨率 640 x 360、帧率 16 fps、码率 400 Kbps;
多人视频通话场景
分辨率 160 x 120、帧率 15 fps、码率 65 Kbps;
分辨率 320 x 180、帧率 15 fps、码率 140 Kbps;
分辨率 320 x 240、帧率 15 fps、码率 200 Kbp;
03.
技术加餐|
点击文章名称即可跳转👇
1. Sanitizers 系列之 address sanitizer 用法篇
内容概述:非法的内存访问是最最常见的一种内存错误,本文介绍用于检测这类错误的 Sanitizer:AddressSanitizer(简称 asan)。由于 asan 涉及的内容较多,将内容分为上下两篇来进行介绍:上篇: 介绍 asan 的用法、工程实践,并提供了非法内存访问的样例代码便于读者实践。下篇: 介绍 asan 的原理、准确性等内容。
内容概述:网易云信音视频实验室取得 NTIRE 高效率超分辨率挑战赛总体性能赛道冠军,以及运行时间赛道季军。本文将着眼于 AI 超分技术从研究到部署的落地问题,介绍超分辨率技术现状,以及视频超分在移动端落地应用所面临的机遇与挑战。
内容概述:对于分布式系统来说,高并发、高性能、高可用往往是系统架构设计所追求的目标。高可用设计作为保护系统的手段,更是所有系统设计都需要考虑的。为了“反脆弱”,在微服务拓扑不断演进的情况下,限流是高可用手段中保障服务弹性和拓扑健壮的重中之重。想一想,如果业务推出了双十一秒杀活动,或者对外开放了多个 OpenAPI 接口供三方调用,在没有任何限流措施保护的情况下,大量不可预知的流量直接打到业务系统......这些很可能导致系统崩溃进而带来大量的业务损失和口碑影响。本文将结合网易云商的语音机器人,分享分布式系统下的限流实践。
内容概述:。目前网易云信的 IM SDK 支持全平台,IM SDK 每次发版除了要针对新功能进行测试外,回归测试也占了很大比重,只单纯依靠人工测试,会出现许多问题。网易云信的“自动化测试平台”解放了大量的人力,本文将基于此,分享 C++ 静态反射在云信 SDK 中的应用实践。
内容概述:网易云信新晋的 IM 顶流产品「圈组」出道后获取到了极大的关注,很多云信的客户在接入的同时对于「圈组」的底层技术细节和原理也非常关注,为此,我们决定推出云信「圈组」相关的系列技术文章,分享网易云信在「圈组」技术设计上的一些思考。
END
「云信小课堂」推荐阅读
👇接入指南👇
关于网易云信
网易云信是集网易 20 余年 IM 以及音视频技术打造的融合通信云服务专家,稳定易用的通信与视频 PaaS 平台。
提供融合通信与视频的核心能力与组件,包含 IM 即时通讯、5G 消息平台、一键登录、信令、短信与号码隐私保护等通信服务,音视频通话、直播、点播、互动直播与互动白板等音视频服务,视频会议等组件服务。
网易云信服务于网易云音乐、好未来、新东方、科大讯飞、南京银行等各行各业客户。