如何在直播应用中实现多人KTV?

在今年Facebook F8大会上,Facebook宣布了将在Instagram Direct上开放一对一与群组视频聊天功能,这种新功能可以帮助用户使用实时视频聊天来相互连接,即使是他们没能相聚在一起。毫无疑问,社交领域的一线平台开始越来越重视实时音视频技术在社交领域的应用。

不过,在Instagram正准备增加视频社交功能之前,我们国内的某款已上市社交应用,已经基于实时音视频基础能力,开始拓展新的玩法了。而且,据说上线后,立刻成为用户们正向体验的功能,用户活跃与留存双破新高。这个新功能就是KTV。我们也用电脑+手机录制了一段视频,大家可以感受下这款设计应用中的多人KTV功能(如果你只想听效果,请空降38秒处)。

在社交直播中,有人是靠颜值上位,有人则是以优美的声线取胜,KTV正是为后者准备的。从上面这个视频可以看出,具体功能如下:

  • 房主建立房间后,开启KTV功能,上麦;

  • 房主在线点歌,歌曲与KTV歌房中常见MV一样,包括画面、字幕伴奏;

  • 观众可以申请上麦,进行点歌、演唱;

  • 上麦的观众在演唱时可自主调节伴奏与人声音量;

  • 房主可控制歌曲暂停、切歌。

与直播秀场有什么差别?

你可能想问:听上去就是直播秀场,这有什么差别么?其实,两者之间在功能和体验都存在差别。

在功能方面如表格所示,秀场直播主播演唱时,观众可以文字参与评论、互动,也可以上麦。但观众上麦后只能聊天,不能上台演唱。而一起KTV的伴奏曲库存放于线上,任何观众都可以在线点歌、演唱。

从体验角度讲,秀场直播只是主播的个人秀。秀场相当于是主播的“独乐乐”。而一起KTV更接近线下KTV体验。每个人都可以点歌,都有机会演唱,是一种互动体验的升级。

实现KTV功能需要留意哪些问题

一起KTV与我们曾分享过的“赛事直播”场景很像,都是基于实时音视频技术的基本能力拓展而来的。从表面来看,一起KTV功能很简单,但其中存在一些难点:

歌曲控制同步

“一起KTV”强调的是要“一起”唱,主播可以邀请多个听众上麦,你方唱罢,我登场,每个人都有机会站在聚光灯下。

在这个过程中,“话筒”会按顺序传递给不同连麦观众,主播仍然可以控制歌曲的播放,如切歌、暂停等操作。但如果采用RTMP传输,网络延时较高。那么网络情况较好情况下,当主播暂停歌曲或切歌后,可能连麦演唱的观众在3~4秒后才会发现,或者歌曲已经开始,下一个演唱者还没能开唱。如果网络情况差,延迟可能会超过10秒。

高音质、高画质

每个站上台演唱的人都想展现自己真正的技术。如果无法以高质量音质传输,无疑会影响用户体验。同时,该场景下的MV画面相当于连麦中的视频画面,卡顿、模糊等问题同样存在。开发者如果希望通过自研实现,需要基于UDP协议进行传输,并在边缘节点的部署、主干网络拥塞、弱网传输等方面做出优化策略。

如我们在《详解音视频直播中的低延时》中所说,开发者除了要对网络传输进行优化,还需要尽可能优化编解码算法,降低音视频在端上的延时。

声网的实现思路

我们具体研究了该功能的实现方式,开发者们可以点击这里查看详细开发步骤,或者也可以通过Github直接获取 源码,自己动手尝试一下。我们的实现逻辑如上图所示,具体逻辑是这样的:

  • 房主开启“一起KTV”功能后成为演唱者;

  • 房主端从第三方在线曲库读取MV歌曲数据;

  • 观众上麦申请被房主通过后,可在线点歌,并开始排麦;

  • 房主的歌声与MV伴奏在本地经过混音、编码,基于UDP协议传输至Agora SD-RTN™;

  • 然后我们通过UDP协议将房主K歌歌声与MV画面传输给观众;

  • 轮到播放上麦观众所点的歌时,观众成为演唱者,除了没有歌曲控制权限外,歌曲演唱、混音、编码、传输流程与房主一致。

除实现主要的功能之外,我们还需要支持传输720p以上的高清画面。这是为了保证在手机上MV(包含了歌词)的观看体验。同时,还需要额外开发包括音量调节、切歌、演唱者切换等主播控制功能。


最后,如果你有更多想法,欢迎加入线上K歌技术交流群。

入群方法:

  1. 加扫描下方二维码,添加为好友;

  2. 申请加入K歌技术交流群;

你可能感兴趣的:(如何在直播应用中实现多人KTV?)