融合通信常见问题3月刊 | 云信小课堂

1629f9085aa741f7c6a39feae3839e91.png

2022.03

8b51ca012b58c2aa7fbd3e787e9a0114.png

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

outside_default.png

本期内容概览

看这里!别人踩过的坑快避开

1. Mac 端使用 Type-C 耳机说话别人听不到

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

3. 退到后台一段时间后再说话,对方听不到声音

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

5. 小程序说话,Native 听不到

6. 发送信息失败

7. 因加密模式问题无法上架到 Google 商店

8. App 启动时应用使用不流畅

这些知识点你知道吗?

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

2. SDK 支持的 QoS 策略是什么意思?

这些干货也不容错过!

1. 网易会议开源之移动端篇、桌面端篇

2. RTC 音频质量评价和保障

3. Gitlab-ci 替代 webhook 触发Jenkins job

4. SQLite 简介

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

outside_default.png

01.

错题集

d86c3b06928c0de63287fda614273672.png

音视频通话

疑难问题 1:

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

  • 易错等级:⭐⭐⭐⭐

  • 错题原因

    c17331ee4d88296fb97d063e5beb7f1d.png

    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 和sourceData。发送完消息的时候,这些私有属性会置空。如果再次调用 sendmessage 方法的话,会因为找不到这些参数报错参数错误;

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

  • 解题思路

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

    如果是自己想多次发送同一个内容的消息,就按创建消息的流程,创建一个 message 对象发送一次,避免发送完不重新创建就再次 sendMessage 同一个 messag e对象。

    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卡顿。

02.

知识加油站

bb96afbf605c2407ce6f0791c65f8c4b.png

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

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

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

(1)用户角色

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

直播场景中,用户默认角色为主播,可以发送音视频流、配置推流任务等。通过方法 setClientRole 可切换用户角色,切换为观众后,只能接收音视频流。

通话场景中,用户默认角色为主播。不支持切换用户角色为观众。

(2)QoS 策略

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

直播场景。在直播场景下,NERTC SDK 的 QoS 策略控制侧重于保证画质清晰度。因此在默认情况下,如果分辨率和帧率相同,直播场景的码率相较于通信场景更高。在弱网环境下会有一定延时。

通信场景。在通信场景下,NERTC SDK 的 QoS 策略控制侧重于保证音视频通话的实时性,最大程度上保证低时延。在弱网环境下会降低音质、画质来保证音视频通话流畅。

2. 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。

03.

技术加餐

c79a42c809c2b53a7c83fe173e2f27ee.png

点击文章名称即可跳转👇

1. 网易会议组件正式开源

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

2. “易+”开源 | 网易会议开源之移动端篇

  • 内容概述:网易会议组件源代码已经上传至 Github,本文主要介绍了网易会议组件在网易会议移动端的实践落地。

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

  • 内容概述:网易云信在通信领域深耕多年,基于自身能力打造了一款成熟的会议系统并将其开源,本文将介绍网易会议桌面端的相关内容。

4. 技术干货 | RTC 音频质量评价和保障

  • 内容概述:如何对 RTC 音频的效果开展测试,通过构建客观、标准、可重复的评价体系来保证好的音频传输质量?

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

  • 内容概述:本文根据网易云信的落地实践,详细介绍了如何借助 Gitlab-ci 替代 webhook 触发 Jenkins job。

6. 技术干货 | SQLite 简介

  • 内容概述:SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。本文主要介绍了 SQLite 的相关特性。

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

  • 内容概述:网易智企精心挑选 51 篇技术文章,集结成 20 万字的《网易智企技术合辑》,免费送给每一位开发者!

END

c489c8913c3e8ae19db8fccb278f69fa.gif

「云信小课堂」推荐阅读

   融合通信常见问题 2月刊 

👇接入指南👇

(点击关键词直达)

音视频通话 | 构建本土「Clubhouse」

安卓端PK连麦 | iOS端PK连麦

在线聊天室 | 聊天室内容审核

利用 UI 组件实现应用级别在线聊天室

协同办公系统 | 音视频安全检测

网易会议开源指南 | 视频双录

8309286b17499d9911adea6aa97ab9de.gif

8ea668a7b66c86f9d31f026a3030ad33.gif

关于网易云信

网易云信是集网易 20 余年 IM 以及音视频技术打造的融合通信云服务专家,稳定易用的通信与视频 PaaS 平台。

提供融合通信与视频的核心能力与组件,包含 IM 即时通讯、5G 消息平台、一键登录、信令、短信与号码隐私保护等通信服务,音视频通话、直播、点播、互动直播与互动白板等音视频服务,视频会议等组件服务

网易云信服务于网易云音乐、好未来、新东方、科大讯飞、南京银行等各行各业客户。

64e7496d5307c0d7ad198c1d29498fc5.gif

f29dd5e2b958700921c21d9e70f98b8c.gif

7bb6f2fffdedf25bef8158d6ec807c0b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值