HarmonyOS鸿蒙Next华为游戏多媒体服务开发攻略之实时语音

前言

多人对战开黑、国战语音指挥、桌游在线连麦…实时语音越来越成为游戏中玩家互动交流不可或缺的能力。

但对于大部鸿蒙分游戏开发者来说,在保证游戏产品质量的同时,还需要构建一套实时语音能力,则不得不面临着一系列技术瓶颈和高开发成本压力。

为了满足多种游戏场景下的实时语音聊天需求,华为游戏中心推出的游戏多媒体服务,提供了一站式的语音解决方案,可以有效实现游戏内实时语音自由对讲。其提供的低延迟、高流畅、安全可靠的实时语音能力,成为众多游戏开发团队的不二选择——不仅满足众多游戏场景的主流语音需求,而且接入简单、开箱即用,只需集成轻量级SDK,即可快速构建实时语音对讲功能。

首先,为了方便大家更快入手游戏多媒体服务,建议新手同学先根据下面的流程图步骤完成开发前的准备工作。

开发准备

在进行功能开发之前,需要完成以下步骤:

详细的准备工作流程,您可前往华为开发者联盟官方文档查看。

话不多说,接下来,让我们看看如何调用相关API构建实时语音能力吧。

功能开发

创建游戏多媒体实例

在实现游戏多媒体相关功能前,需先完成游戏多媒体实例的创建,可通过调用GameMediaEngin.create方法创建一个实例。

加入语音房间

“语音房间”指的是一个音频空间。当不同玩家通过调用GameMediaEngin.joinTeamRoom方法,使用相同的房间ID加入到同一个语音房间后,即可实现语音沟通,互相发送/接收实时音频数据。

切换到其他语音房间

如果玩家加入了多个语音房间后,可通过调用GameMediaEngine.switchRoom方法切换语音房间,进入到不同房间中发言。这里需要注意的是——只有在当前房间,玩家才具备语音接收与输出能力,而在其他已加入的房间中,玩家不具备发言能力,仅具备语音接收能力。

禁言/屏蔽其他玩家

通常,在游戏中遇到其他不友好玩家的发言,普通玩家可对其语音内容予以屏蔽,主要通过调用GameMediaEngine.mutePlayer方法实现。同时,具有禁言权限的玩家(例如房主),可以选择通过调用GameMediaEngine.forbidPlayer方法对其实现禁言限制。

当然,玩家也可以通过调用GameMediaEngine.muteAllPlayer方法,实现一键屏蔽所有玩家语音功能,或者对于具有禁言权限的玩家(例如房主),通过调用GameMediaEngine.forbidAllPlayers方法可一键禁言所有玩家。

设置麦克风状态

进入语音房间的玩家,并不希望自己游戏全程都开启着麦克风,或者因某种原因需要临时关闭麦克风,那么则可以通过调用GameMediaEngine.enableMic方法设置自己的麦克风状态。

离开房间

进入语音房间后,如果玩家不希望留在某个房间中,则可以通过调用GameMediaEngine.leaveRoom方法离开指定语音房间。

写在最后

除了上述实时语音能力,华为游戏多媒体服务还支持内容检测与风控,同时解锁了更多语音应用场景,如需进一步探索,快去官网了解更多详细内容吧。


更多关于HarmonyOS鸿蒙Next华为游戏多媒体服务开发攻略之实时语音的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next华为游戏多媒体服务开发攻略之实时语音的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用华为游戏多媒体服务(HMS Game Multimedia Kit)开发实时语音功能,首先需集成HMS Core SDK,并申请相关权限。通过调用HwAudioEngine接口,实现音频的采集、编码、传输和解码。开发者需配置音频参数,如采样率、声道数等,并利用HwAudioPlayerHwAudioRecorder进行音频的播放和录制。实时语音通信可通过HwAudioSession管理会话,确保低延迟和高音质。此外,需处理网络波动和回声消除,以优化用户体验。

回到顶部