本文介绍如何在你的 Android App 里实现在线 K 歌房的重要功能。
在线 K 歌房内用户角色说明如下:
角色 | 描述 |
---|---|
房主 | 歌房创建者。可以收、发音频流。 |
连麦主播 | 进入歌房后,通过上麦成为连麦主播,可以收、发音频流。 |
主唱 | 连麦主播点歌后进行排麦演唱,正在演唱者成为主唱,可以收、发音频流。 |
听众 | 进入歌房的倾听者,只能接收音频流。 |
在线 K 歌房场景不同角色实现流程如下:
参考如下步骤实现在线 K 歌房场景的房主端流程:
joinChannel
方法加入歌房。create
方法创建并初始化 RtcEngine
。setChannelProfile
方法将场景设置为直播(LIVE_BROADCASTING
)。setClientRole
方法将用户角色设置为主播( BROADCASTER
)。参考下图实现在线 K 歌房场景的主唱端流程:
joinChannel
方法加入歌房。create
方法创建并初始化 RtcEngine
。setChannelProfile
方法将场景设置为直播(LIVE_BROADCASTING
)。setClientRole
方法将用户角色设置为主播( BROADCASTER
)。startAudioMixing
方法播放歌曲,并伴随歌曲唱歌。如需切换原唱或伴奏模式,可以调用 setAudioMixingDualMonoMode
方法。getAudioMixingCurrentPosition
方法获取当前歌曲播放进度,结合歌词组件实现歌词同步显示,并自定义歌词界面,详见歌词同步功能。leaveChannel
方法离开歌房。参考如下步骤实现在线 K 歌房场景的听众端流程:
用户选择歌房,调用 joinChannel
方法加入歌房。
create
方法创建并初始化 RtcEngine
。setChannelProfile
方法将场景设为直播(LIVE_BROADCASTING
)。setClientRole
方法将用户角色设置为听众( AUDIENCE
)。主播上麦成为主唱后,听众通过第三方云服务同步房间内麦位信息。
主唱发起指令设置当前歌曲 ID,听众接收主唱指令并更新当前歌曲 ID。主唱唱歌时,听众接收主唱的音频流。
听众如需上麦,需要再次调用 setClientRole
方法将用户角色设为 BROADCASTER
,才可以在房间内发布音频流。
听众通过第三方云服务发起获取当前歌词指令,并下载歌词。同时结合 onStreamMessage
回调和歌词组件,实时同步歌词进度。
听众调用 leaveChannel
方法离开歌房。
开始前,请确保你的开发环境满足以下条件:
根据下表提供的链接,下载对应平台的 SDK 并集成到你的项目中,并开通内容中心服务。
产品 | SDK 下载 | 集成文档 |
---|---|---|
声网 SDK | 声网音频 SDK | 实现音频直播 |
第三方云服务 | 第三方云服务 SDK | SDK 安装指南 |
声网歌词组件 | 源码 | 歌词组件教程 |
参考如下 API 时序图实现在线 K 歌房场景,同时你可以参考示例项目 Online KTV 中的代码。
创建和加入歌房
实时 K 歌
下表提供声网 RTC SDK 的核心 API 参考,与第三方云服务相关的功能需要自行实现。
API | 实现功能 |
---|---|
create |
调用其他 API 之前,需要调用该方法创建并初始化 RtcEngine 。 |
setChannelProfile |
设置场景。加入歌房之前,需要将场景设为直播(LIVE_BROADCASTING) 。该场景下有两种用户角色,可以通过 setClientRole 设置。 |
setClientRole |
设置用户角色。加入歌房时,需要将主唱的用户角色设为 BROADCASTER 、听众的用户角色设为 AUDIENCE 。听众成功上麦后,需要先调用该方法将用户角色切换为 BROADCASTER ,才能在房间里发布音频流。 |
joinChannel |
加入歌房。用户加入歌房后才能接收或发布音频流。 |
leaveChannel |
离开歌房。房主离开歌房后,房间对象自动销毁,其他成员会自动离开歌房。 |
setAudioProfile |
设置音频编码属性。 |
startAudioMixing |
主唱调用该方法播放歌曲,并伴随歌曲唱歌。 |
muteLocalAudioStream |
主唱可以关闭或开启本地麦克风。 |
getAudioMixingCurrentPosition |
主唱获取当前歌曲的播放进度,单位为毫秒。你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged(PLAY) 回调后调用该方法。 |
createDataStream |
主唱创建数据流。用于同步歌曲播放进度。 |
sendStreamMessage |
主唱发送数据流到歌房内所有用户。 |
onStreamMessage |
歌房内所有用户接收主唱发送的数据流,结合歌词组件实现歌词进度的同步更新。 |
setAudioMixingDualMonoMode |
主唱切换原唱或伴奏模式。AUDIO_MIXING_DUAL_MONO_R AUDIO_MIXING_DUAL_MONO_L |
调用 adjustRecordingSignalVolume
调节人声音量,调用 adjustAudioMixingVolume
调节伴奏音量。
调用 enableInEarMonitoring
方法开启主唱的耳返功能,详见如何开启耳返。
主唱调用 stopAudioMixing
停止播放当前歌曲,并同步状态到听众端。
声网在 GitHub 上提供了在线 K 歌房的开源示例项目,你可以前往下载,或者查看其中的源代码。