头图

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

本期内容概览

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

边听音乐边沟通的过程中人声变小。

调用离开房间接口后,摄像头仍处于使用状态。

观众切换至连麦者时,听到主播的声音两次重复播放。

Web 端旁路推流之后,拉流端拉不到流。

关闭摄像头后重新打开,摄像头被切换无法保持。

使用 Web 端纯音频通话场景时,听不到声音。

这些知识点你知道吗?

为什么打开摄像头失败?

如何处理视频模糊问题?

为什么视频会出现卡顿?

一、错题集

语聊房

疑难问题1: 语聊房伴音场景,边听音乐边沟通的过程中人声变小。

易错等级: ⭐⭐⭐⭐

错题原因:

伴音音量和人声音量设置不合理,导致接收端的音频效果较差。

解题思路:

(1)setAudioMixingPlaybackVolume 的音量建议设置不超过 25,超过之后可能伴音过程中语音沟通的体验会受到影响;

(2)adjustRecordingSignalVolume 该接口默认音量为 100,建议不要调整。

疑难问题2: 调用离开房间接口后,摄像头仍处于使用状态。

易错等级: ⭐⭐⭐

错题原因:

使用 nertc-web-sdk 时,部分接口出现重复调用。Stream.init(初始化音视频流对象)被重复两次调用的情况下,本地被创建了两条不同的视频流,同时使用摄像头设备。在 Client.leave(离开音视频房间)时,只有一条流的设备使用被结束,致使摄像头仍在被使用状态。

解题思路:

业务中,需管理 Stream.init 调用次数及 Stream 对象的生命周期,每个 Stream 只需初始化一次,以确保音视频正常使用。

互动直播

疑难问题3: 观众切换至连麦者时,听到主播的声音两次重复播放。

易错等级: ⭐⭐⭐

错题原因:

互动直播应用中,观众及连麦者的切换,涉及播放器从 CDN 拉流切换至加入 RTC 房间订阅主播音视频。在观众连麦成功后,未停止播放器播放而直接加入音视频房间并订阅主播音视频,致使主播音频同时从播放器以及音视频房间中重复播放。

解题思路:

互动直播中,连麦者上麦的标准实现流程:

(1)连麦成功

(2)退出播放,释放播放器实例和资源 mLivePlayer.release();

(3)初始化音视频并进入音视频房间

(4)订阅远端音视频

疑难问题4: Web 端旁路推流之后,偶现拉流端拉不到流。

易错等级: ⭐⭐⭐

错题原因:

推旁路流(addTasks 或者 updateTasks)和推 RTC 房间流(publish)的时序错误,导致互动直播混流时缺少数据源

解题思路:

推旁路流之前确保对应的流已在 RTC 房间发布成功,所以需要再 publish 成功之后再去调用 addTasks;

如果旁路布局中还包含其他用户的流,那得收到对应用户的 stream-added/stream-subscribed 流回调之后再去调用 addTasks 或者 updateTasks。

通用问题

疑难问题5: 使用音视频时,关闭摄像头后重新打开,摄像头被切换无法保持。

易错等级: ⭐⭐⭐

错题原因:

开关视频使用 NERtc#enableLocalVideo() 接口,此时打开前置或者后置摄像头是由上一次调用 setLocalVideoConfig 中传入的 frontCamera 参数决定的,如果在调用 enableLocalVideo 之后重新设置了 setLocalVideoConfig 接口中的 frontCamera 参数,那就以这个参数为准去打开对应的摄像头。

解题思路:

setLocalVideoConfig 为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。

音频通话

疑难问题6:

使用 Web 端纯音频通话场景时,在接收到到订阅的远端视频流之后,听不到声音。

易错等级:

错题原因:

Web 端接收到订阅的远端音频之后需要调用 play 方法播放。

解题思路:

stream-subscribed 回调(表示订阅远端的音/视频流成功)里面,调用 play 去播放远端的音视频流,此时 audio 和 video 推荐均设置为 true。

二、知识加油站

为什么打开摄像头失败?

摄像头打开失败有多种原因,您可以参考如下步骤进行排查:

  1. 确认摄像头权限有没有打开。Android、iOS/macOS 系统都有权限管理,请在系统设置中检查。同时 Android 上有些安全软件也管理权限。
  2. 检查是否有其他应用占据了摄像头。关闭其他应用,重启手机再试。
  3. 摄像头硬件问题。打开系统自带的拍摄视频程序看是否可以录像。

如何处理视频模糊问题?

视频模糊一般是由视频码率或分辨率过低导致。

  1. 确认 SDK 中分辨率的设置,您可以通过 setLocalVideoConfig 方法方法来设置视频相关的属性。
  2. 尝试 4G/5G 连接,或者其他 WiFi 信号排除网络问题。
  3. 接收端接受的是大流还是小流,是小流的话可以调用接口申请大流关闭小流。
  4. 如果有视频前处理,请先关闭前处理进行测试,排除前处理的问题。

为什么视频会出现卡顿?

视频卡顿问题一般由网络、设备性能等原因造成。

  • 判断是持续性的还是一次性的卡顿。一次性的卡顿是由网络和设备的随机性导致,属于正常现象。
  • 检查网络状态,判断连接是否正常,是否能够上网。
  • 如果网络连接正常但依然卡顿,请尝试更换网络连接,检查在网络状态良好的条件下是否依然卡顿。
  • 如果网络良好且条件允许,请尝试更换设备。
  • 如果有视频前处理,例如美颜等,请先关闭前处理,检查卡顿是否由于前处理导致。

三、技术加餐

资讯|WebRTC M97 更新

内容概述:WebRTC M97 目前在 Chrome 的稳定版中可用,包含 10 多个错误修复、增强和稳定性/性能改进。

技术干货 | C++ 四大特性之三:concept 特性详解

内容概述:模板的演进是 C++ 发展史中一条十分重要的线,笔者认为 concept 是这条线中最大的一个特性,本文将详细解读 C++ 的 concept 特性,以期对 C++ 有更深入的了解。

技术干货 | WebRTC ADM 源码流程分析

内容概述:本文主要基于 WebRTC release-72 源码及云信音视频团队积累的相关经验而成,主要分析以下问题: ADM(Audio Device Manager)的架构如何?ADM(Audio Device Manager)的启动流程如何?ADM(Audio Device Manager)的数据流向如何?本文主要是分析相关的核心流程,以便于大家有需求时,能快速地定位到相关的模块。


网易数智
619 声望140 粉丝

欢迎关注网易云信 GitHub: