2024/08/27 13:21:22
接唱
本文介绍如何实现歌曲接唱。在此之前,请确保你已参考实现文档集成 KTV API。
方案介绍
接唱是一种音乐游戏玩法,玩家在每轮游戏中通过接唱歌曲来保持音乐的连贯性。游戏开始时播放歌曲,房间内参与游戏的人轮流接力演唱歌曲,其余玩家作为听众。接唱强调玩家间音乐的流畅连接,是一种富有娱乐性的音乐互动体验。
默认情况下,由房主或指定的用户播放歌曲并发起演唱,其他参与游戏的人轮流进行接唱,不参与游戏的人为听众。
接唱场景下存在三种角色:
- 主唱:默认为房主,也可以是指定的用户,负责播放音乐并发起演唱,实现逻辑等同于合唱场景中的主唱:主唱需要加入主频道,加载并播放歌曲,发布麦克风采集的音频流。此外,主唱还需要加入合唱子频道 将人声同步给其他伴唱。
- 伴唱:房间内其他参与接唱游戏的人。实现逻辑等同于合唱场景中的伴唱:伴唱需要加入合唱子频道,加载并播放歌曲,发布麦克风采集的音频流。
- 听众:房间内不参与接唱游戏的人为听众。听众需要加入主频道,加载歌词。KTV API 模块内部控制听众订阅独唱者的人声和音乐的音频合流,同步独唱者的音乐播放进度,让歌词组件进入歌词滚动状态等逻辑。如果听众需要上麦聊天,可以更新媒体选项。
下图为接唱方案的技术原理图:
接唱实现
与合唱方案相比,接唱方案中仅需在 KTVApiConfig
中将 KTVType
设为 SingRelay
(接唱场景),因此,你可以参考合唱方案来实现主唱和听众的逻辑。当轮到某位伴唱演唱时,该伴唱调用 muteMic(false)
打开麦克风进行演唱,其他伴唱调用 muteMic(true)
关闭麦克风即可。
API 参考
本文集成步骤中使用如下 API: