本文介绍语聊房解决方案中常用的进阶功能。
实现进阶功能前,请确保你已实现基础的语聊房功能,例如登录即时通讯系统、获取房间列表、创建房间、加入房间。详见基础功能。
高音质会给语聊房带来更好的音频体验。专业的音频直播间需要主播使用声卡进行音频采集,以获取更好的语音效果。你可以参考如下示例代码,调用声网 RTC SDK 中的 setAudioProfile
、setAudioScenario
、setParameters
方法来为专业直播和普通直播设置高音质:
(专业直播)当主播使用声卡采集音频时,设置高音质:
// Kotlin
setAudioProfile(Constants.MUSIC_HIGH_QUALITY_STEREO)
setAudioScenario(Constants.AUDIO_SCENARIO_GAME_STREAMING)
setParameters("{\"che.audio.enable.aec\":false}")
setParameters("{\"che.audio.enable.ns\":false}")
setParameters("{\"che.audio.enable.agc\":false}")
setParameters("{\"che.audio.custom_payload_type\":78}")
setParameters("{\"che.audio.custom_bitrate\":128000}")
setParameters("{\"che.audio.input_channels\":2}")
// Swift
rtcKit.setAudioProfile(.musicHighQualityStereo)
rtcKit.setAudioScenario(.gameStreaming)
rtcKit.setParameters("{\"che.audio.enable.aec\":false}")
rtcKit.setParameters("{\"che.audio.enable.ns\":false}")
rtcKit.setParameters("{\"che.audio.enable.agc\":false}")
rtcKit.setParameters("{\"che.audio.custom_payload_type\":78}")
rtcKit.setParameters("{\"che.audio.custom_bitrate\":128000}")
rtcKit.setParameters("{\"che.audio.input_channels\":2}")
(普通直播)当主播未使用声卡采集音频时,设置高音质:
// Kotlin
setAudioProfile(Constants.MUSIC_HIGH_QUALITY_STEREO)
setAudioScenario(Constants.AUDIO_SCENARIO_GAME_STREAMING)
setParameters("{\"che.audio.custom_bitrate\":128000}")
setParameters("{\"che.audio.custom_payload_type\":78}")
// Swift
rtcKit.setAudioProfile(.musicHighQualityStereo)
rtcKit.setAudioScenario(.gameStreaming)
rtcKit.setParameters("{\"che.audio.custom_bitrate\":128000}")
rtcKit.setParameters("{\"che.audio.custom_payload_type\":78}")
播放背景音乐和音效可以活跃语聊房内的气氛。本节介绍如何在语聊房中播放多种来源的音乐:
如果主播使用的音乐文件是本地文件或在线文件,播放方式有如下两种:
调用声网 RTC SDK 中的 startAudioMixing
方法播放文件。
使用声网 RTC SDK 中内置媒体播放器来播放文件。
声网和中国音像著作权集体管理协会合作提供了数十万首热门歌曲。声网支持你在语聊房和直播间播放有版权的背景音乐。你可以参考如下步骤使用声网版权音乐来给语聊房增加趣味性:
联系 sales@shengwang.cn 开通声网版权音乐和内容中心服务。
在你的业务服务器中,通过 RESTful API 向声网内容中心获取歌曲详细信息,并将信息保存在你的服务端。详见声网内容中心 RESTful API。
在你的业务客户端中,增加歌曲搜索和点歌的功能。当用户点击播放某首歌曲时,你需要获得歌曲的 SongCode
(标识音乐资源的编号),然后通过声网 RTC SDK 中的版权音乐 API 预加载歌曲,通过声网 RTC SDK 中内置媒体播放器播放歌曲。详见客户端实现点歌。
如果需要展示歌词,你可以通过版权音乐 API 和 SongCode
来获取歌词文件地址,获取后你就可以展示歌词。详见歌词组件。
你还可以在语聊房中使用第三方厂商提供的版权音乐,例如腾讯正版曲库直通车(AME)。参考如下步骤在语聊房中播放第三方版权音乐:
在你的业务客户端中,通过第三方版权音乐 SDK 实现歌曲搜索、点歌功能。当用户选中歌曲播放时,你需要使用第三方版权音乐 SDK 对音乐进行解码,但不进行播放。
通过第三方版权音乐 SDK 的原始音频数据 API,获取 PCM 格式的原始音频数据。
通过声网音频自采集功能将你之前获取的原始音频数据发送给声网 RTC SDK。声网 RTC SDK 内部会自动将麦克风采集到的声音和第三方版权音乐的歌曲声混合,并发送到声网 RTC 频道中,频道内的听众都可以听到这个混音。
语聊房中的音量波纹提示功能可以让房间的听众看到谁正在发言。该功能的实现流程如下:
调用声网 RTC SDK 中的 enableAudioVolumeIndication
方法启用音量提示功能,建议你在启用音量提示时设置音量提示时间间隔为 500 毫秒。
你可以从 SDK 触发的 onAudioVolumeIndication
回调获得本地和远端讲话者的音量信息。建议你在 volume
值大于 20 时给出音量提示并在 UI 上制作音量对应的波纹效果。