乐趣区

关于前端:融合通信常见问题3月刊-云信小课堂

「交融通信常见问题」月刊将在每月末与大家见面,该月刊次要包含错题集、常识加油站、技术加餐三大板块,会集实际过程中的易错问题和解题思路,分享交融通信畛域的前沿资讯和技术干货,为您的开发提效减速,为您的进阶之路添砖加瓦。

本期内容概览

看这里!他人踩过的坑快绕开!

Mac 端应用 Type-C 耳机谈话他人听不到;

声音从蓝牙耳机播放切换到外放;

退到后盾一段时间后再谈话,对方听不到声音;

iOS 端呼叫组件初始化时 APP 卡死;

小程序谈话,Native 听不到;

发送信息失败;

因加密模式问题无奈上架到 Google 商店;

App 启动时,利用应用不晦涩

……

这些知识点你晓得吗:

直播场景与通信场景有什么区别?

SDK 反对的 QoS 策略是什么意思?

如何解决无声问题?

如何解决回声问题?

这些干货也不容错过!

网易会议组件正式开源

网易会议开源之挪动端篇、桌面端篇

RTC 音频品质评估和保障

Gitlab-ci 代替 webhook 触发 Jenkins job

SQLite 简介

20 万字《网易智企技术合辑》重磅公布

一、错题集

音视频通话

疑难问题 1:

Mac 端插入 Type-C 耳机之后谈话,其余端听不到。

易错等级:⭐⭐⭐⭐

错题起因:

Mac 对于 Type-C 耳机的适配有问题,Mac 端在插入 Type-C 耳机后,谈话时零碎声音面板中的输出电平很低或者简直没有,而且在该状况下,市面上其余的通话软件成果均统一。因而判断无奈失常应用 Type-C 的耳机是 Mac 对于 Type-C 耳机的适配不好导致。


解题思路:

倡议能够更换其余耳机或者应用零碎麦克风通话。

疑难问题 2:

音视频发送音频流,接收端听到的声音异样,从蓝牙耳机播放切换到外放。

接收端一开始听到的声音是通过蓝牙耳机播放的,在调用 enableLocalAudio 设置成 true 之后,声音异样变为外放,再次调用 enableLocalAudio 设置成 false 之后,声音复原通过蓝牙耳机播放。

易错等级:⭐⭐⭐

错题起因:

iOS 的音频是通过 AVAudioSession 治理的,是单例类,不止 SDK 能够调用,客户业务层也能够批改 AVAudioSession 的 option,这个问题景象看跟调用 SDK 的办法无关,实际上是在调用 SDK 办法的时候,客户业务层有调用批改 AVAudioSession 的 option,批改成了外放类型 AVAudioSessionCategoryOptionDefaultToSpeaker。

解题思路:

业务层有应用到 AVAudioSession 的时候,留神治理好业务层的调用。在通过 SDK 进行音频输入的时候防止批改 AVAudioSession。

疑难问题 3:

Android 端发送音视频 / 纯音频,退到后盾一段时间后再谈话,对方听不到声音。

易错等级:⭐⭐⭐

错题起因:

音视频采集退后台后被零碎限度。长时间退后台,采集是个高危动作,极有可能被零碎限度,取决于用户对 APP 的设置及系统对这种行为的限度要求,零碎限度详情请见行为变更(https://developer.android.com/about/versions/pie/android-9.0-changes-all);

解题思路:

在锁屏或将利用退至后台前,倡议用户能够先开启前台服务,从而让利用失常工作(持续采集声音和视频画面),在退出锁屏或返回前台前终止前台服务;不过须要有个预期:因为高版本 Android 零碎对于退后台持续采集这种敏感操作十分严格,前台服务的保活也是有危险的,须要思考好异常情况的解决形式。

疑难问题 4:

iOS 端呼叫组件初始化时,偶现 APP 卡死状况

易错等级:⭐⭐⭐

错题起因:

呼叫组件外部初始化 IM 和老版本 RTC SDK 互锁导致卡死。

解题思路:

依照官网文档在 pod 导入 NERtcCallKit 的时候,指定 NERtcSDK 版本为 4.2.120。

示例如下:

pod ‘NERtcCallKit’, ‘1.5.0’

pod ‘NERtcSDK’, ‘4.2.120’

4.2.120 版本是呼叫组件适配的稳固版本,pod 不指定版本拉到的 NERtcSDK 不是稳固版本。

疑难问题 5:

小程序和 Native 通话时,小程序谈话,Native 听不到

易错等级:⭐⭐⭐

错题起因:

小程序调用 publish 时参数传递谬误。小程序端 publish 时,须要传入要公布的媒体类型,而在传参时谬误的认为传入 video 示意音视频都公布。

解题思路:

  1. 公布音视频流时 publish 中 mediaType 应设置为 ”(空字符串);
  2. 公布纯视频流时 mediaType 应设置为 video;
  3. 公布纯音频流时 mediaType 应设置为 audio。

IM 即时通讯

疑难问题 6:

以下两种场景时,发送失败,报错参数谬误:

1. 再次 sendMessage 发送曾经发送过的图片和文件类音讯;

2. 间接 forwardMessage 发送新创建的音讯。

易错等级:⭐⭐⭐

错题起因:

1. 文件类音讯创立的时候能够抉择相册门路和 data 两种模式创立,创立的时候会赋值给文件 NIMMessageObject 的公有属性 sourceImage,sourceFilepath 和 s ourceData。发送完音讯的时候,这些公有属性会置空。如果再次调用 sendmessage 办法的话,会因为找不到这些参数报错参数谬误;

2.forwardMessage 发送音讯,SDK 会解析 messageObject 的 encodeContent 属性,拿到 messageObject 的对象数据进行转发,如果是新创建的音讯调用转发办法发送会因为找不到 messageObject 的 encodeContent 报错参数谬误。

解题思路:

1. 这种场景如果是转发的场景就须要调用转发的接口 forwardMessage,或者先调用 makeForwardMessageFromMessage 结构转发的 message,再 sendMessage 发送。

如果是本人想屡次发送同一个内容的音讯,就按创立音讯的流程,创立一个 message 对象发送一次,防止发送完不从新创立就再次 sendMessage 同一个 message 对象。

2. 新创建的音讯间接应用 sendMessage 发送,防止调用转发接口 forwardMessage 发送。

疑难问题 7:

客户须要上架到 Google 商店的时候,会被检测到有一处应用了不平安的加密模式的问题,导致无奈上架。

易错等级:⭐⭐⭐

错题起因:

Google 不反对 AES/ECB/PKCS5Padding 的加密模式。

解题思路:

在 IM SDK 8.11.5 之后的版本去除了该加密模式,能够降级解决。

疑难问题 8:

App 启动的时候,利用会呈现应用不晦涩的状况。看 logcat 日志显示 IM 相干日志频繁打印。

易错等级:⭐⭐⭐

错题起因:

有可能是频繁调用阻塞查问本地数据的接口,这类接口会查问本地数据库,如果在 UI 线程中循环调用会呈现性能问题,导致 UI 卡顿。能够通过在 logcat 日志中过滤 TransExec: execute Transaction 关键字,确认是否有 IM 接口频繁调用的状况,尤其须要留神“xxxBlock();”这类同步办法。

解题思路:

  1. 确认是否为业务层实现有问题,通过调整业务层逻辑,防止接口频繁调用。
  2. 查看 api 确认是否有批量查问的办法,防止循环调用。例如 TeamService.queryTeamBlock 能够改为 TeamService.queryTeamListBlock。
  3. 改为异步调用办法,或者放在子线程中调用,避免 UI 卡顿。

二、常识加油站

直播场景与通信场景有什么区别?

NERTC SDK 通过 setChannelProfile 办法设置实时音视频通话的场景,您能够通过该办法将房间设置为通信场景或直播场景,默认为通信场景。网易云信会针对不同实时音视频场景设置不同的优化策略,例如用户角色、默认视频编码码率等。

通信场景设置举荐用于一对一或多人音视频通话场景,直播场景设置举荐用于语音聊天室、小班课、主播 PK 等互动直播场景。

用户角色

为了便于管理用户权限,在直播场景中实现更细节的权限管制,音视频通话 2.0 反对在直播场景中设置用户角色。用户角色可设置为主播(broadcastor)或观众(audience)。

  • 直播场景中,用户默认角色为主播,能够发送音视频流、配置推流工作等。通过办法 setClientRole 可切换用户角色,切换为观众后,只能接管音视频流。
  • 通话场景中,用户默认角色为主播。不反对切换用户角色为观众。

QoS 策略

直播场景和通信场景下的默认 QoS 策略不同,次要体现在以下方面。

  • 直播场景。在直播场景下,NERTC SDK 的 QoS 策略管制侧重于保障画质清晰度。因而在默认状况下,如果分辨率和帧率雷同,直播场景的码率相较于通信场景更高。在弱网环境下会有肯定延时。
  • 通信场景。在通信场景下,NERTC SDK 的 QoS 策略管制侧重于保障音视频通话的实时性,最大水平上保障低时延。在弱网环境下会升高音质、画质来保障音视频通话晦涩。

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。

如何解决无声问题?

无声问题定义:通话过程中或通话全程,双方或多方听不到声音。

问题解决思路:如下图所示,发送端与接收端之间有多个音频解决与传输过程,倡议通过采集、编码、网络传输、解码、播放等各模块对问题进行定位。

  • 查看采集及播放设施的应用权限。
  • 查看音视频房间的连贯状态。
  • 查看公布 / 订阅接口调用。
  • 查看扬声器 / 麦克风关上状态。
  • 查看静音接口调用。
  • 查看外接设备状态,如蓝牙耳机、音箱,如 Windows 设施需查看驱动程序或应用零碎自带的设施自检。

如以上内容均未存在问题,请分割网易云信共事,云信技术支持会及时提供技术服务帮忙问题定位及解决。

如何解决回声问题?

回声问题定义:本端在音频传入时,扬声器播放本人传入的音频。

问题解决思路:如下图所示,发送端听到本端的声音,个别为接收端回声打消解决呈现不牢靠的状况导致,如在多人的场景下,需先定位明确的异样接收端。

  • 隔离通话单方设施的物理间隔。
  • 顺次静音房间内的用户,判断呈现回声的异样源。
  • 异样源佩戴耳机的状况下可去除回声。
  • 提供异样源的设施具体信息蕴含 SDK 客户端日志。

请将收集的异样源信息提供给云信技术支持,云信技术支持会及时反馈异样解决进度及后果,该过程个别无需进行 SDK 替换。

三、技术加餐

网易智企公布“易 +”开源打算,网易会议组件正式开源

内容概述:网易智企公布”易 +”开源打算,旗下交融通信云服务专家网易云信打响头炮,正式开源网易会议组件,并将在第二季度开源低延时直播技术。

“易 +”开源 | 网易会议开源之挪动端篇

内容概述:网易会议组件源代码曾经上传至 GitHub,该我的项目由网易云信团队自研,联合网易云信零碎相干通信性能、实时音视频、即时消息、白板、直播等性能构建了一套会议零碎,本文次要介绍了网易会议组件在网易会议挪动端的实际落地。

“易 +”开源 | 网易会议开源之桌面端篇

内容概述:线上会议越来越广泛,很多企业心愿可能开发出一套本人的会议零碎,不便工作和交换;网易云信在通信畛域深耕多年,基于本身能力打造了一款成熟的会议零碎并将其开源,本文将介绍网易会议桌面端的相干内容。

技术干货 | RTC 音频品质评估和保障

内容概述:会议、连麦、音视频通话、在线教育、近程医疗等实时互动场景对 RTC 音频的品质提出了越来越高的要求,如何对 RTC 音频的成果发展测试,通过构建主观、规范、可反复的评估体系来保障好的音频传输品质,也成为目前比拟紧急和重要的课题。

技术干货 | Gitlab-ci 代替 webhook 触发 Jenkins job

内容概述:网易云信的 gitlab 服务器搭建在外网,Jenkins 服务器搭建在内网,因而 gitlab 没方法间接把 webhook 发送给 Jenkins,而 pipeline 的搭建采纳第三方 relay 转发的形式,然而这个 relay 常常“罢工”。本文依据网易云信的落地实际,具体介绍了如何借助 Gitlab-ci 代替 webhook 触发 Jenkins job。

技术干货 | SQLite 简介

内容概述:SQLite 是世界上应用最宽泛的数据库引擎。SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天应用的有数其余应用程序中。本文次要介绍了 SQLite 的相干个性。

2 周年福利 | 20 万字《网易智企技术合辑》重磅公布!

内容概述:「网易智企技术 +」行将迎来 2 周岁生日,网易智企精心筛选 51 篇技术文章,集结成这份 20 万字的《网易智企技术合辑》,送给每一位开发者!

退出移动版