有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

无声问题

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

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

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

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

一般音频问题

GME 是否支持手机的蓝牙切换?

不支持。声音的切换是手机系统层面的,游戏多媒体引擎支持蓝牙设备播放。

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

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

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

权限申请为系统操作,并按以下顺序进行排查:
1. 确定在 AndroidManifest 里面有声明麦克风权限。
2. 可以在代码中主动申请麦克风权限。

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

这个是啸叫声音,认为比较小概率会两个实际玩家会离得很近开麦沟通,同时为了声音可达率,我们默认做了声音增强。在使用手机拨打电话时,放在一起也会出现此情况。
这种情况只在开发过程中比较常见,实际业务场景较少,因为现实中面对面的人不会开麦克风进行交流。

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

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

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

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

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

系统默认为扬声器播放。

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

不支持。

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

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

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

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

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

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

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

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

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

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

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

利用接口 IsAccompanyPlayEnd()。

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

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

声音卡顿的主要原因?

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

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

播放端支持双声道。