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