技术教程 | 在线 KTV 实现过程(内附 demo 体验)
你在线上 K 过歌吗?
在线 K 歌自 2014 年兴起以来,已经发展出了无比庞大的用户群体,每两人中就有就有一人体验过在线 K 歌,其前景不可小觑。
如此庞大的市场规模,以及音视频技术使用门槛逐步降低的加持,各类在线 K 歌玩家大幅增加,在 K 歌赛道大放异彩,对于开发者而言,如何能够快速实现线上 KTV 的场景就变得十分重要。
想要快速实现一起在线 K 歌的开发,看起来很难,那是因为你还不知道 ZEGO 即构科技,只要实现以下三步就可以快速的实现一起 K 歌的开发。
今天的文章就带领大家一起了解线上 KTV 的结构与实现过程,让开发变得更简单!
一、准备工作
1、开发环境的准备
更多详情可点击:集成过程
Android Studio 2.1 或以上版本。
Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本。
Android 4.1 或以上版本,且支持音视频的 Android 设备。
Android 设备已经连接到 Internet。
2、ZEGO 平台账号的注册
开发环境搭建好之后,需要在 ZEGO 管理控制台上创建应用、才能获取开发需要的 AppId 和 AppSign 。具体的创建应用过程详见文章:控制台创建项目流程
二、实现流程详细介绍
1、接口规范说明
首先分析 ZEGO 的 API 输入输出规范。根据 API使用文档 来看,调用接口格式如下:
以创建 ZegoExpressEngine 单列对象为列,每个参数都详细的解析其作用。每个接口都描述了作用与用法。
2、一起 KTV 的项目开发 (实现流程)
一起 KTV 是一个依附于语音聊天室的娱乐场景。在这个场景中,一个 KTV 房间里包含了三种角色(房主、合唱着、听众)。
房主:创建 KTV 房间并推送人声、伴奏到远端,并发起混流任务。房主会自动上麦并固定为麦上首位。可点歌切歌(包括自己点的歌和合唱者点的歌)
合唱者:合唱者可以点歌,或者与其他合唱者进行合唱。(上麦后成为合唱者,可点歌切歌-只能切当前播放是自己点的歌)
听众:进入 KTV 房间后,拉取播放房间内的混流。
其中的功能模块有,房间管理、麦位管理、点歌系统、合唱同步管理、歌词同步管理 5 个业务模块。
整体架构图如下:
整体实现流程如下:接入参考链接
(1)用户需要调用 createEngine 接口,初始化 ZEGO Express SDK。
(2)用户需要调用 createCopyrightedMusic 接口,创建版权音乐对象。
(3)用户需要调用 initCopyrightedMusic 接口,初始化版权音乐对象。
(4)用户可以通过调用 sendExtendedRequest 接口,发送版权音乐扩展请求,获取 songID(songID 是一首歌曲的唯一标识)。
(5)用户可以调用 requestSong、requestAccompaniment 接口,进行点歌或点伴奏,然后通过 ZegoCopyrightedMusicRequestSongCallback、ZegoCopyrightedMusicRequestAccompanimentCallback 回调接口,获取 songID 对应的 resourceID、shareToken。
(6)在获取到其他用户分享的 shareToken 后,可以在有效时间内调用 getMusicByToken 接口获取被分享的音乐资源,然后通过 ZegoCopyrightedMusicGetMusicByTokenCallback 回调获取 shareToken 对应的 resourceID。
(7) 用户可以调用 getLrcLyric 接口获取歌词,将会通过 ZegoCopyrightedMusicGetLrcLyricCallback 回调获取到结果。
(8)用户获取 resourceID 后可以调用 download 接口下载资源。
(9)下载资源成功后,用户可以开始调用 start 接口播放资源,或通过 pause 、stop 等接口调整播放状态。
3、角色实现流程
(1)房主端的实现流程
创建引擎并配置。
通过业务后台创建房间,创建成功后调用 loginRoom 加入 RTC 房间。
房主默认上麦,并处于麦上首位。
房主可自由点歌、切歌(自己点的歌、合唱者点的歌)。
精准混流任务仅由房主发起,混流包括房主的人声流、房主伴奏流以及所有合唱者的人声流。
发送 SEI 信息,让房间内所有人同步歌曲播放进度。
房主可让其他上麦成员下麦,同时需要通知房间内所有成员麦位变化以更新麦位信息。
房主调用业务后台销毁房间,成功后调用 logoutRoom 销毁 RTC 房间,房间内所有成员自动退房。
流程图如下:
(2)合唱者端的实现流程
创建引擎并进行相关配置。
获取房间列表,加入业务后台房间,成功后调用 loginRoom 加入 RTC 房间。
进房后上麦成为合唱者。上麦过后可点歌、当前播放的是自己点的歌也可切歌。
监听房间歌曲变化,按需加载歌曲和歌词。
推送自己的人声流,拉取所有合唱者的人声流,但不拉取混流。
解析房主发送的 SEI 信息,当歌曲播放进度与房主的差距过大时,校准本端播放器进度和歌词。
流程图如下:
(3)听众端的实现流程
创建引擎并进行相关配置。
获取房间列表,加入业务后台房间,成功后调用 loginRoom 加入 RTC 房间。
监听房间歌曲变化,按需加载歌词。
拉取混流。
解析房主发送的 SEI 信息,校准本端歌词进度。
流程图如下:
三、在线 KTV 效果展示
想要体验 Demo 可点击链接下载:Android apk 安装包
四、总结
牛顿曾说:我看得远,是因为我站在巨人的肩膀上!
基于 ZEGO 即构科技的音视频功能、在线 K 歌的解决方案,一番操作下来,很简单就开发出来一款《一起 KTV》的 demo。而在线 KTV 的合唱体验能够取得突破,得益于即构科技在端到端通话延迟上的重大进展,即构通过对数据传输每个环节的优化,在保障的合唱体验效果的前提下,将端到端的感官延迟降低至 70ms,带来最极致的视听盛宴!
一起动手实操一下吧!
版权声明: 本文为 InfoQ 作者【ZEGO即构】的原创文章。
原文链接:【http://xie.infoq.cn/article/96b8f827e15335990e1c0bd24】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论