有奖调研
文档中心 > 游戏多媒体引擎 > 常见问题 > 实时语音无声及音频问题

实时语音无声及音频问题

最近更新时间:2021-09-03 10:31:42

无声问题

接入实时语音之后,用两台机子进入房间之后,没有听到声音。

问题排查的步骤如下:

  1. 确认是在成功进入房间的情况下没有听到声音。
  2. 是否进入的是同一个房间。
  3. 是否两个客户端使用了同一个 OpenId 进入房间。
  4. 是否成功打开麦克风,麦克风权限是否已经打开,是否在主线程调用的打开麦克风操作。
  5. 是否将对方加入黑名单中。

iPhone 手机进房成功后,无法听到别人说话的声音,如何解决?

请先检查 iPhone 手机侧面的物理静音按键是否为打开状态。

进房后,手机音量变得很小,开启麦克风后音量又变得很大,怎么解决?

手机的音量分媒体音量和通话音量。媒体音量如果很小,即使通话音量很大,进房时候如果不开启麦克风,则默认使用是媒体音量,所以进房后也会显得声音很小。用户需要确认媒体音量是否处于一个适中大小的状态。同理,开启麦克风后,声音变得很小,则需要调整手机的通话音量。

导出到 Android 手机上使用的时候,出现打开麦克风但是手机没有申请权限,应该如何解决?

权限申请为系统操作,并按以下顺序进行排查:

  1. 确定在 AndroidManifest 里面有声明麦克风权限。
  2. 可以在代码中主动申请麦克风权限。

音频相关问题

两台设备离得比较近,并且都开着麦克风时,会出现非常刺耳的噪音。

这个是啸叫声音,认为比较小概率会两个实际玩家会离得很近开麦沟通,同时为了声音可达率,我们默认做了声音增强。在使用手机拨打电话时,放在一起也会出现此情况。

这种情况只在开发过程中比较常见,实际业务场景较少,因为现实中面对面的人不会开麦克风进行交流。

iPhone 手机设置物理静音键后,依然能听到房间内的声音?

物理静音键的生效涉及 AVAudioSession,需要客户在 XCode 中配置。

Android 手机打开麦克风后,声音从听筒而不是扬声器出来,该如何解决?

在权限中添加 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 权限。

接入 SDK 后,如何设置默认开启扬声器而不是听筒?

系统默认为扬声器播放。

SDK 是否支持听筒播放声音?

不支持。

如何实现在一个房间内,只有两个成员能互相通话,其他成员只能收听的需求?

开发者在客户端进行维护,其他观众不能开启麦克风即可。

如果用户本地没有麦克风,怎么提示用户?

GetMicListCount 可以获取麦克风设备数量,可以通过此接口进行判断。

进房前可以设置麦克风音量吗?

不可以。在房间中才可以调用实时语音相关接口(例如 ITMGAudioCtrl、ITMGAudioEffectCtrl 等)。

请问麦克风权限占用的具体情况?

  • 在 EnterRoom 函数调用成功后,将占用麦克风权限,期间其他程序无法进行麦克风采集。
  • 调用 EnableMic(false)函数无法释放麦克风占用。
  • 如果确实需要释放麦克风,请调用 PauseAudio。调用 PauseAudio 后会整个暂停引擎,调用 ResumeAudio 可恢复。

是否有调用 EnableMic 函数前获取麦克风好坏状态的接口?

利用 getMicCount 接口可以获取到麦克风是否可以使用。

GME 获取实时音量的方法,麦克风的音量多久会报告一次?

接口 GetMicLevel 每20ms 统计一次音量,所以开发者最频繁也是 20ms 获取一次。

开发者如何判断是否有播放背景音乐?

利用接口 IsAccompanyPlayEnd()。

进入房间后,打开麦克风后播放伴奏,但是关闭麦克风后便无法播放伴奏,怎么规避此问题?

进房成功后使用 EnableAudioCaptureDevice,然后打开伴奏,再通过 EnableAudioSend 控制上行下行就不会关闭伴奏,详情可参见 实时语音伴奏流程图

声音卡顿的主要原因?

  • 音乐卡:主播使用外放的设备播音乐,再通过另一个手机采集并主播(这里会必现卡顿,可建议主播带耳机)。
  • 网络卡:上行丢包率过高或者上行延时波动较大情况下观众会听到卡顿。
  • 客户需要判断卡顿的具体表现,是声音延迟,还是声音。

为了实现 3D 音效,用户使用的麦克风和扬声器有什么要求?

播放端支持双声道。

目录