女朋友最近经常跟我嚷嚷,好想唱 K,但是因为持续不断的疫情,很难有机会约朋友们一起唱。
我想很多人也一样,距离上次唱 K 也有好一段时间了,除了疫情的关系,也可能因为常玩的朋友不在一个城市,没有机会聚在一起唱 K。
我就在想,有没有什么办法能把 KTV 搬到 “线上”?
如果能成的话,这样居家也可以和大家一起唱 K,而且还能拉上不在同一个城市朋友一起唱。
虽然没有线下的氛围感好,但是至少能感受到大家“聚在”一起的感觉,也是件很美好的事情。
从中也能听的出谁的唱功进步了,谁的唱功退步了,或者出现了破音的爆笑场面。
那问题来了,如何实现一个「在线 KTV」 应用呢?
「在线 KTV」 应用有一个特点,是需要持续的语音交流,而且还是多人级别的。
如果我自己要从 0 开始实现一个「在线 KTV」应用,开发的周期会很长,而且也具备一定的门槛。
因为得自己搭建音视频服务端,以及实现手机 APP(Android、IOS),除了这些工作之外,还要在音视频传输的可用性和高质量方面,进行大量的改进和打磨。
反正我投降,我是没这个能力从 0 实现。
我折腾了好几天,终于找到了一个方法,不用自己部署服务端就能快速实现了一个「在线 KTV」应用。
其实,要想实现一个体验好的「在线 KTV」应用,最关键的技术是 RTC。
像视频会议、在线教育、直播连麦这类的音视频互动应用,背后主要由 RTC(实时音视频) 技术支撑的。除了这些常见的应用场景之外,王者荣耀里的语音交流和微信视频通话,也运用此技术。
今天就跟大家聊聊,我是如何快速实现一个「在线 KTV」应用的。
不过,在此之前,可能很多人没接触过 RTC,先简单跟大家科普什么是 RTC?它和传统直播有什么区别?
RTC vs 传统直播
RTC 全称是 Real-Time Communication,翻译过来就是实时音视频技术,顾名思义,就是支持音频、视频实时传输的技术。
RTC 最大的特点就是低延时和无卡顿,所以比较常见的应用场景是音视频互动。
RTC 和传统直播是不一样的。
传统直播一般是采用 RTMP 协议,RTMP 协议是基于 TCP 传输协议实现的,再加上使用 CDN 进行内容分发,通常有 3-5 秒的延迟。
应用在体育赛事网络直播、演唱会网络直播、新闻现场直播这些场景,延迟是可以接受的,并不会影响用户体验。
但是对于在线视频会议、语音直播、在线教育些对互动有非常高要求的场景,传统直播技术就无法满足了。
所以,针对实时互动类的音视频场景,出现了 RTC 技术。
它的延时一般低至几百毫秒,主要因为 RTC 一般采用 UDP 作为基础传输协议,UDP 的实时性比 TCP 强。
实现「在线 KTV」应用
还记得我之前用腾讯云的轻量级服务器实现了一个私人网盘吗?
后来,我在腾讯云发现了 TRTC 产品,也就是腾讯云实时音视频服务。
TRTC 是这样介绍自己的:
实时音视频(TRTC) 是腾讯云提供的一套低延时、高质量的音视频通讯服务,而且提供了全平台的 SDK,可以帮助开发者快速搭建低成本、低延时、高品质的音视频互动应用。
我在 TRTC 里发现,腾讯云已经提供了很多应用的 Demo,比如音视频通话、多人视频会议、语音互动直播、视频互动直播、在线 K 歌、实时合唱。
正好这里有在线 K 歌的应用 Demo,它提供了 Android 和 IOS 平台的源码,那我就不用造轮子了,直接拿来用。
接着,我就开始研究怎么跑起这个在线 K 歌应用的 Demo。
准备工作
先做好以下工作:
- 开通腾讯云 TRTC 服务,注意无需额外购买服务器,只需要开通 TRTC 服务 即可;
- 下载在线 K 歌应用的 Demo ,我这里选择 IOS 源码;
- 安装 Xcode 编译器,用于编译 IOS 应用;
在线 K 歌 IOS 应用的源码路径如下:
第一步,首先先安装编译该应用的库环境
打开终端,进入 Podfile 文件所在目录下执行安装命令,参考如下:
第二步,打开工程文件
双击打开 TUIKaraokeApp.xcworkspace。
Xcode 编译器页面如下:
第三步,配置 TRTC 应用ID 和 TRTC 应用密钥
创建一个新的 TRTC 应用后,单击应用信息,TRTC 应用ID(SDKAppID )和 TRTC 应用密钥(Secretkey) 对应信息如下图所示:
然后把 SDKAppID 和 Secretkey 这两个信息复制到 GenerateTestUserSig.swift
文件里。
第四步,编译运行
做好前面的工作后,就可以直接编译运行在线 K 歌应用的 Demo 了。
编译成功后,就会弹出 iphone 手机的模拟器,就可以操控在线 K 歌 APP 了。我这里选择创建了一个房间,页面效果如下:
简单测试没问题后,就生成 APP 的安装包,然后我用我的手机安装了该应用。
第五步,功能演示
我和女朋友用这个 APP 唱 K 的时候,感觉延时还是很低的,双方基本都可以对着歌词同步合唱。
而且打开混响效果,发出的声音确实跟线下唱 K 的时候差不多,很有意思。
接下来,跟大家说说这款在线 K 歌 APP 的功能。
一共有 8 个麦,也就是支持 8 个人同时唱 K,但是并不是房间内只能 8 个人,如果是单纯的听众是没有数量限制的。
参与上麦的人可以进行点歌/切歌,提供超 20w 热门曲目,里面有包含周杰伦的歌。
播放的歌曲在顶部会有歌词面板,还可以控制是伴奏还是原唱,控制音乐音量、人声音量等,而且还提供了很多新鲜玩法,比如混响、变声等多种音频效果。
也支持即时通信,可以进行文字交流。
以上这些功能基本已经满足了线上唱 K 的需求了,我总结下腾讯云提供的功能:
- 实时音频互动:超低延时观看,听众实时接收房主和连麦主播的音频流,保证互动的流畅性。
- 互动连麦:听众可上麦成为连麦主播,房间内所有用户都可以实时收听麦上主播互动。
- 正版曲库:正版曲库直通车提供超20w热门曲目,全套高精度伴奏歌词,多码率音质灵活应用,搜索/榜单/歌手分类多维选曲。
- 排麦模块:连麦主播点歌后,歌曲进入已点列表;当同时上麦人数大于 1 时,根据每首点播歌曲的排麦顺序上麦演唱。
- 歌词模块:歌曲播放时,根据播放进度显示对应的歌词;听众收听的歌曲进度与歌词进度实时同步。
总结一下
怎么样?很简单吧,即使你不懂 RTC,也可以在几分钟就实现了一个在线 KTV 应用,而且即实现即可上手使用。
除此之外,TRTC 还可以实现很多有意思的场景,比如音视频通话、多人视频会议、在线教育、语音互动直播等等。
大家还记得去年很火爆的“Clubhouse”软件吗?它是一款语音社交 APP。
其实这个应用的技术也不难,关键技术也是 APP RTC,所以如果要想简单地复刻出一个 Clubhouse 应用,很快就能实现出来 。
因为 TRTC 也提供了集成 UI 的多人语音直播互动解决方案,同时支持 Android、iOS、小程序平台,基本功能如下图所示:
所以,想快速开发一款基于音视频互动的产品,可以直接选择腾讯云的 TRTC 产品。
因为不仅提供了全球化的低延时、低卡顿、高品质的 TRTC 实时音视频服务,还提供了多种应用场景且全平台的 Demo。
不用自己从 0 造轮子,可达到低门槛的快速接入效果,极大地减少了项目开发的周期。
当然,如果你们公司想在原本的业务,接入音视频互动类的应用,使用腾讯的 TRTC 产品,也是可以轻松实现的,因为腾讯云提供了全平台的 SDK,接入文档也写的很详细。
采用这个方式,不仅可以帮公司缩短了开发周期,还可以节省了人力资源,因为无需花费人力去研究如何实现一个稳定音视频服务器,这其实是个庞大的工程。
总的来说,想搭建一个低成本、低延时、低卡顿、高品质的音视频互动应用,选择腾讯云的 TRTC 就可以一站式解决了。
对了,我这次实现的在线 KTV 应用,是购买了腾讯云的 9.9 元实时音视频套餐包,共有 2 万分钟可以使用。
假设我一天唱 1 个小时,那够我唱 300 多回合了,那能用好久,而且价格也很便宜,这不比线下唱一次 K 香多了。
感兴趣的同学,可以扫码了解。