搭了一个 WebRTC 语音聊天室,效果惊人

2022-01-17 09:15:10 +08:00
 bmpidev2019

搭建了一个基于 WebRTC 技术的语音聊天室。测试了下和一个沙特阿拉伯人聊了一个小时,出奇的稳定,语音质量也很好,和国内的人聊也都很稳定,不比 zoom 与微信差。

比 App 的优势好在无需注册,分享房间链接,用浏览器打开即可聊天,用完一切就消失了,隐私性好。

测试地址: https://free4.chat/

开源仓库地址: https://github.com/madawei2699/free4chat

此网站是后端基于 kraken,它本身又基于 Go 语言中 pion 这个 WebRTC 的库,前端基于 Mornin,我把搭建的操作流程都放入了项目中的 infra 目录中,如果你要自己搭建的话,可以参考。

不过目前的功能只是我想要的一部分,所以后续可能会添加一些功能,目前想到的有这些:

如果你对 webRTC, peer-to-peer(P2P), real-time collaboration(CRDT), distributed system 或 robot design 感兴趣,欢迎关注或参与进来。

说效果惊人是,测试了一天,语音通话质量出奇的好,因为一个房间大多不到十个人,语音通话质量不仅稳定而且不比 zoom 、腾讯会议、微信等差(个人及测试的人感觉)。

另外一个有意思的是服务器,后端服务包括 coturn 都部署到一台 1 核、1G 内存的 AWS 服务器上。目前测试的效果是服务器毫无压力,甚至可以降级到 512M 内存的机器。

最终昨天大概有近一千人访问,创建了上千个房间,服务器始终负载没怎么变化,可能这就是 P2P 的优势吧。

19560 次点击
所在节点    分享创造
82 条回复
mywaiting
2022-01-17 09:19:43 +08:00
这货是不是双方建立连接后,就直接点对点通信了?不用通过服务器中转负载肯定低
cat9life
2022-01-17 09:23:03 +08:00
这个牛 x 能做 ppt 演示吗
bmpidev2019
2022-01-17 09:24:58 +08:00
@mywaiting 服务器是 SFU 的,并且 coturn 也开启了 turn ,在糟糕的情况下,所有 peer 都需要服务器中转才行,所以也不能直接说全部就直连了
bmpidev2019
2022-01-17 09:25:38 +08:00
@cat9life 目前只有语音,你说的这种在线会议就可以,有很多开源的框架可以弄
sunwei0325
2022-01-17 09:29:47 +08:00
@cat9life https://meet.jit.si/ 这个可以共享屏幕
santom
2022-01-17 09:31:37 +08:00
之前 RTC 做过一阵大直播,这个延迟怎么样?
tanhui2333
2022-01-17 09:35:45 +08:00
以前做过基于 kurento 的,确实还行。不过不是音视频流媒体行业的,深度搞起来有点吃力。
cat9life
2022-01-17 09:38:44 +08:00
@sunwei0325 谢谢
keith1126
2022-01-17 09:39:11 +08:00
> 不比 zoom 与微信差

前半句应该有点夸张了……只能说网络状况良好的情况下,怎么实现都差不多。
5sheep
2022-01-17 09:48:48 +08:00
这个 WebRTC 多年前就已经有很成熟的开源应用了。 楼主再次从头开始,是啥想法呢? 练技术?
bmpidev2019
2022-01-17 09:50:34 +08:00
@keith1126 和沙特阿拉伯那边聊了一小时多,其中也有国内深圳、珠海、云南、陕西的人进来,我持续测试了一天,因为我们工作也在用 zoom (在家办公,一挂一整天),我对比在同样的网络环境下,感觉就是比 zoom 要好一些,当然环境的问题很复杂,但测试的感受就是这样的
lloovve
2022-01-17 09:51:18 +08:00
一对一能理解点对点通信,多个人的房间怎么点对点?
bmpidev2019
2022-01-17 09:53:31 +08:00
@5sheep 通过一个产品去持续练技术,就当技术实验田吧,当然 webRTC 也一直在发展,不能说已经成熟到不变的地步了,还有其他技术可以玩,甚至可以在技术上找一些好的场景,比如在线会议已经很成熟了,那这个产品只能走极端,比如在语音中找一些玩法、场景,找需求点(比如语言学习等场景),这些都是一些可尝试的点,并不是重复造轮子
bmpidev2019
2022-01-17 09:55:37 +08:00
@lloovve SFU 并不是用户与用户的连接,而是这种模式 https://excalidraw.com/#json=2AAmNFc0WMiDurA5ejiB4,Hjs5fMMQh5ollETmhfgWWw
okakuyang
2022-01-17 10:20:02 +08:00
这个肯定都是全部流量转发的,就国内网络环境不可能穿透成功的。
bmpidev2019
2022-01-17 10:25:15 +08:00
@okakuyang 如果是全部中转了,那按目前的采样率数据还挺小的,实时在线 20 多人,服务器网络流量每秒才 30-40KB (上行与下行都差不多这个范围)
LiuJiang
2022-01-17 10:28:30 +08:00
webRTC 在国内安卓机上有很大的兼容性问题
legendORld
2022-01-17 10:55:08 +08:00
刚才和同事试了一下,效果还行,就是不知道长时间会不会发热
Zeonjl
2022-01-17 11:08:50 +08:00
国内直连就是牛!
cweijan
2022-01-17 11:11:57 +08:00
去年搭建开源平台 jitsimeet, 和你这个一样, 不过它支持视频, 但是安装太繁琐了, 你这个看起来很轻量

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX