2022.04
「融合通信常见问题」将在每月与大家见面,该月刊主要包括错题集、知识加油站、技术加餐三大板块,汇集实践过程中的易错问题和解题思路,分享融合通信领域的前沿资讯和技术干货,为您的开发提效加速,为您的进阶之路添砖加瓦。
本期内容概览
看这里!别人踩过的坑快避开
1. 主画面用户暂停推流再继续的操作被其他用户替换,主画面区域无法恢复
2. 推流布局设置 720P,拉流端拉到的流分辨率只有 480P
3. 用户听不到主讲人 Web 端的声音
4. 报错 java.io.FileNotFoundException: xxxx :open failed: EACCES (Permission denied);
5. 遍历发送同一张图片/文件,偶现发送图片 699
6. 自动登录过程中调用手动登录接口会失败,并返回错误码:509
这些知识点你知道吗?
1. 一个 RTC 房间内最多支持多少人?
2. 实时音视频 2.0 有哪些改变?
这些干货也不容错过!
1. 实时通信服务中的语音解混响算法实践
2. 浅谈运营商通信中台的设计与实现
3. IndexedDB 代码封装、性能摸索以及多标签支持
4. 网易云信 QUIC 应用优化实践
5. 20万字《网易智企技术合辑》重磅发布
01.
错题集|
■ 音视频通话
疑难问题 1:
主画面用户暂停推流再继续的操作被其他用户替换,主画面区域无法恢复。
易错等级:⭐⭐⭐
错题原因:
客户端开启录制时没有通过对应的参数设置这次通话中云端录制的主讲人 uid(主讲人默认会在布局中占据主画面区域),导致云端录制布局中主画面的位置不会和对应 uid 绑定,所以主画面用户会出现被替换的情况。
解题思路:
以 web 端为例,在调用 join 时需要设置好要发视频流的主讲人 uid。
疑难问题 2:
推流布局设置 720P,拉流端拉到的流分辨率只有 480P
易错等级:⭐⭐⭐
错题原因:
用户在旁路推流的布局中设置了 singleVideoNoTrans 为 true,表示开启视频透传,开启后,如果房间中只有一路视频流输入,则不对输入视频流进行转码,不遵循转码布局;而用户在音视频房间中发的流分辨率就是 480P,所以导致服务器直接把 480P 的流透传给了 CDN 节点,拉流端拉到的流分辨率自然是 480P。
解题思路:
拉流端拉流分辨率和推流布局设置的分辨率一致,需要设置 singleVideoNoTrans 为 false。
疑难问题 3:
教育场景下老师(Web 端)和学生的音视频通话:学生听不到老师 Web 端的声音
易错等级:⭐⭐⭐
错题原因:
老师 Web 端麦克风设备比较特殊,麦克风采集的左右声道数据样本值几乎是反过来的;在这种情况下,系统转成单声道的时候,样本值就会很小,从而造成采集的声音很小,导致学生都听不到老师的声音。
解题思路:
Web 端推荐的音频属性为 music_standard(单声道回声消除的兼容性更好,所以推荐这个属性),建议在求助面板上增加修改音频属性的功能,当一些特殊设备遇到无声问题,可以设置 setAudioProfile 为 standard_stereo,改为双声道之后再验证下结果,提高 Web 端音频在线上设备的兼容性。
■ IM 即时通讯
疑难问题 4:
报错 java.io.FileNotFoundException: xxxx :open failed: EACCES (Permission denied);
易错等级:⭐⭐⭐⭐
错题原因:
Android11 以上对写文件的操作有限制,只能在应用的私有目录下进行写文件操作。
解题思路:
IM SDK 初始化的时候需要给 SDKOptions.sdkStorageRootPath 配置私有目录,如"/sdcard/Android/data/包名/files"。
疑难问题 5:
遍历发送同一张图片/文件,偶现发送图片 699。
易错等级:⭐⭐⭐
错题原因:
上传的过程中会根据文件地址缓存该次上传的 token,由于上传是多线程进行的,所以如果是同一个文件同时多次上传,会导致下次上传的时候会获取上次缓存的 token,从而查询上传偏移量的时候出现了问题。
解题思路:
我们不支持同时上传同一张图片/文件,如果有这种需求建议参考:
1、批量发文件消息的时候检测是否包含重复的文件地址,如果有重复的文件,消息需要依次发送。
2、如果该文件是固定的,建议提前生成一个永久固定的 url 地址,发该文件的时候直接用这个 url 地址发送。
疑难问题 6:
自动登录过程中调用手动登录接口会失败,并返回错误码:509
易错等级:⭐⭐⭐⭐
错题原因:
SDK 不支持同时登录两个账号,并且登录状态是单例维护的,如果同时存在两个登录过程会导致登录状态发送混乱。
解题思路:
出现该类问题一般是对自动登录的理解有误造成的,一个账号手动登录成功后,下次应用启动的时候可以使用自动登录接口。即使自动登录失败,IM SDK 内部也会有重连逻辑,最终保证登录成功,所以在自动登录期间不需要使用手动登录接口。
// 在初始化SDK的时候,将本地所存的account与token传入loginInfo(),用以自动登录
NIMClient.init(this, loginInfo(), options());
02.
知识加油站|
1. 一个 RTC 房间内最多支持多少人?
NERTC SDK V 4.1.0 版本开始支持多至上万人的音视频通话,最多支持 60 人视频通话,可用于线上年会、远程会议、学术论坛等需要多人实时音视频通话的场景。在 V 4.1.0 版本中,NERTC SDK 针对 200 人以上的音视频通话场景进行了技术优化与改进,提高了多人通话的连通性与语音效果,在大房间音视频通话场景中为您提供更优质的语音视频体验。
2. 实时音视频 2.0 有哪些改变?
网易云信音视频第二代实时音视频产品是网易云信新一代音视频服务,以独立音视频 SDK 的方式进行设计和开发,是网易在第一代技术沉淀的基础上,全面升级了音视频核心的引擎与算法核心模块,融入了 5G、AI 等领域的设计理念,是面向于 4G-5G 时代推出的高品质实时音视频服务,具有更强的新技术扩展能力。
借助音视频 2.0 可以更加快速接入音视频,产品更轻量。
03.
技术加餐|
点击文章名称即可跳转
1. 实时通信服务中的语音解混响算法实践
内容概述:网易云信在语音解混响以及提升通信效果方面的一些研发进展和观点,重点研究基于自适应结合双麦信号相关性的方案,总体目标是在保真语音情况下提升解混响效果。
2. 浅谈运营商通信中台的设计与实现
内容概述:通过运营商通信基建中台化,实现语音呼叫、智能呼叫、文本短信、视频短信、智能短信、5G 消息以及与 RTC 和 IM 的整合。以开放敏捷的架构,提升企业服务效率,实现一体化精准营销。结合线路/媒体管理平台、智能营销系统、全媒体智能客服系统等,拓展服务应用,构建完整通信生态系统及通信链闭环。实现运营商通信综合治理、运营商通信成本降低、运营商通信生态系统搭建。
3. IndexedDB 代码封装、性能摸索及多标签支持
内容概述:IndexedDB 是一个 NOSQL 数据库,可以异步操作,支持事务,可存储 JSON 数据并且用索引迭代,兼容性好,适用于做大量的数据存储,本文主要探讨直接使用 IndexedDB 来存储数据时的一些情况以及遇到的问题。
4. 技术干货 | 网易云信 QUIC 应用优化实践
内容概述:如何在极端弱网条件下仍然能给用户提供可靠的音视频服务,是网易云信关注的重中之重。本文将阐述网易云信对于 QUIC 协议的应用优化实践。
5. 20万字《网易智企技术合辑》重磅发布
内容概述:网易智企精心挑选 51 篇技术文章,集结成 20 万字的《网易智企技术合辑》,免费送给每一位开发者!
END
「云信小课堂」推荐阅读
接入指南
音视频通话 | 构建本土「Clubhouse」
安卓端 PK 连麦 | iOS 端 PK 连麦
在线聊天室 | 聊天室内容审核
利用 UI 组件实现应用级别在线聊天室
协同办公系统 | 音视频安全检测
关于网易云信
网易云信是集网易 20 余年 IM 以及音视频技术打造的融合通信云服务专家,稳定易用的通信与视频 PaaS 平台。
提供融合通信与视频的核心能力与组件,包含 IM 即时通讯、5G 消息平台、一键登录、信令、短信与号码隐私保护等通信服务,音视频通话、直播、点播、互动直播与互动白板等音视频服务,视频会议等组件服务。
网易云信服务于网易云音乐、好未来、新东方、科大讯飞、南京银行等各行各业客户。