UOS Hello 概念篇
UOS Hello 概念篇
UOS Hello
UOS Hello(后续简称Hello)是Unity官方推出,声网运营的游戏内置实时语音服务,目前已经支持实时语音、语音录制服务。支持手游、端游,同时支持这些游戏的多平台互通。适用于FPS、Moba、MMORPG、社交元宇宙等游戏场景的语音功能实现。
游戏语音
游戏语音是 Hello服务中的功能之一,泛指游戏内置语音,例如游戏内的小队语音、好友开黑语音、大世界范围语音等,通过RTC技术实现超低延时的多人实时互动。
音频模块
在音频互动中,音频模块的主要功能如下图所示:
音频路由 是 App 在播放音频时使用的音频输出设备。常见的音频路由有:有线耳机、听筒、扬声器、蓝牙耳机等。
RTC
RTC (Real-Time Communication) 指实时通信技术。这种技术可以让信息发送方与接收方的任何通信服务几乎同时发生。相比泛指的通信,RTC 更加聚焦实时性,可以在极短的时间内传输音频、视频、数据等信息,从而实现实时交流和互动。
游戏语音基本流程
下图展示了利用 Hello SDK 实现音视频互动的工作流程。
- 流:一路流是一系列数字编码的连续信号,包含音频或视频数据。
- 频道:由开发者调用 Hello 提供的 API 创建的、用于传输实时数据的通道。
- 发布:指频道中的用户将音视频数据发送到频道的操作。
- 订阅:指频道中的用户接收频道内已发布的音视频流的操作。
- 用户 ID:App ID 一致的前提下,用户 ID 是用户的唯一标识符。
- 用户角色:用于定义频道内用户是否有发流权限,分别有主播和观众两种用户角色。
- 主播:频道内有发流权限的用户。
- 观众:频道内没有发流权限的用户。观众只能订阅远端音视频流,不能发布音视频流。
- 连接 (RtcConnection):SDK 与 RTC 频道间的连接。当你需要在多个频道中发布或接收多路流时,一个连接用于指定一个目标频道。
- SD-RTN™:是 Software-Defined Real-Time Network 的缩写,即软件定义实时网,这是声网自建的底层实时传输网络。
云录制
云端录制是 Hello服务中的功能之一,Hello为音视频通话和直播研发的录制组件,提供 RESTful API 供开发者实现录制功能,并将录制文件存至第三方云存储。云端录制主要用于游戏内多人语音录制后审核,以及精彩游戏片段录制回放。
录制模式
Hello服务目前支持的是单流录制。完成录制后,录制的内容会以 TS 文件形式上传到你设定的第三方云存储中,同时生成 M3U8 文件用于索引相应的 TS 文件。
单流录制
单流录制指录制服务分开录制频道内每个 UID 的音频流和视频流。录制结束后,录制服务会针对每个 UID 生成其对应的音频文件和视频文件。
举例来说明,如果频道内共有 3 个 UID,每个 UID 都发送音频和视频,则在单流录制模式下,会生成 3 个音频文件和 3 个视频文件。
转码
转码指将音视频数据解码并重新编码,从而实现数据形式、属性等的转换过程。常见的音视频数据转码包含如下属性:
- 编码格式,如 H.264、AAC
- 编码属性,如采样率、码率、I 帧间隔
- 媒体封装格式,如 MP4、TS 等
转码在云端录制服务下应用广泛,常见的应用场景有:
- 单流录制下,通过转码对生成的录制文件进一步处理,比如将每个 UID 的音频和视频文件合并为一个音视频文件,或将切片文件合并为 MP4 文件或其他文件格式。
- 合流和页面录制下,通过对音频和视频文件进行转码,生成你想要的文件格式。
云端录制通过转码脚本来实现音视频数据转换的功能。你可以参考 声网转换录制文件格式文档 来进一步了解如何在单流及合流录制模式下使用转码脚本。
延时转码
在纯音频录制下,你可以开启延时转码模式。开启后,录制服务会在录制结束后 24 小时内(特殊情况下会达到 48 小时以上)将指定频道内所有 UID 的录制文件合并且转码生成一个 MP3/M4A/AAC 文件,并将录制文件上传至你指定的第三方云存储。
切片
切片指在录制过程中将音视频数据按照一定的规则进行切割,生成多个录制文件的行为。切片后会生成多个切片文件(如 TS 或 WebM 文件)以及用于存储切片文件索引的 M3U8 文件。