搭了一个 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 的优势吧。

20262 次点击
所在节点    分享创造
82 条回复
steptodream
2022-01-19 08:57:46 +08:00
要是支持视频就好了,可以拿来改改给公司用。
WLW
2022-01-19 09:13:13 +08:00
@steptodream 同关注支持视频的会议室,有找到好用的,麻烦顺带通知一声,谢谢!~
bmpidev2019
2022-01-19 09:20:03 +08:00
@steptodream
@WLW

公司视频会议有很多系统方案可以用,公司的需求也很复杂,视频、桌面分享、权限管理、录屏啥的,还不如直接用商业方案好了
WLW
2022-01-19 09:34:03 +08:00
@bmpidev2019 最初级的能视频对话就好,权限方面指定账号才能创建 room ,
不用分享桌面(或简单粗暴的摄像头拍另一个屏幕 ^.^ ) ,不用录屏(或同上,哈哈)。
这不是疫情吗,外贸客户不能过来,很多就需要视频对话验货了,
然后老外习惯用的平台,大部分被墙,或者注册账号麻烦。
方便的话,给点关键字,我先搜搜看
bmpidev2019
2022-01-19 10:02:42 +08:00
@WLW 随便找个视频会议在线的网站就可以
k9982874
2022-01-20 08:57:23 +08:00
没被盯上之前都很流畅,一但被盯上就是各种卡顿失联。
PrtScScrLk
2022-01-21 10:42:29 +08:00
老哥你这个服务器性能监控用的是什么,界面还挺好看的。
bmpidev2019
2022-01-21 12:02:44 +08:00
@PrtScScrLk servercat
dany813
2022-01-23 21:00:09 +08:00
很强啊
rapiz
2022-01-28 15:36:43 +08:00
我读了一下 SFU 的描述,这个意思不是所有流量都经服务器中转吗?只是编码和解码在客户端做。希望 OP 解惑
bmpidev2019
2022-01-28 21:07:39 +08:00
@rapiz 我的理解是相当于每个 peer 都和服务器建立 peer 连接了,服务器会对房间里的 peer 的音频 track 做转发。如果不用 sfu ,光是 p2p 这种,客户端每次需要发送 n-1 条音频给其他 peer ,但现在只需要发给服务器一次就可以了
RickyC
2022-02-07 14:39:10 +08:00
好像真的很惊人的样子。
wsseo
2022-02-07 15:48:18 +08:00
腾讯搞了一个 echo
GitContract
2022-02-08 15:16:42 +08:00
lz 拉个群呗
nathanw
2022-02-19 09:13:43 +08:00
超过百人的会议,webrtc 貌似不如 zoom
liuxyon
2022-02-19 09:14:04 +08:00
上个支持 ipv6 的吧?另外如果网络本身延迟大,例如 200-400 多 ms 情况下 效果是怎么样的?
bmpidev2019
2022-02-19 09:40:55 +08:00
@nathanw 和架构还有服务器硬件有关系,比如专用的 MCU 这种硬件,目前 free4.chat 是 sfu 架构,服务器性能要强的话,单机支持百人规模会议也可以,但再多客户端可能扛不住(百人规模客户端是 1 路上行+99 路下行,客户端网络负载高,这种需要高性能的 MCU 这种硬件方案了),zoom 毕竟是企业级服务,有好的软件+硬件方案自然效果更好一些
bmpidev2019
2022-02-19 09:41:52 +08:00
@liuxyon 支持 ipv6 有啥用呢?目前底层用的库 pion 好像都不支持 ipv6 啊,网络延迟高这情况我还没测试
daimaosix
2022-03-09 16:32:15 +08:00
@bmpidev2019 大佬,我始终没看明白你仓库的配置文档怎么回事,按照你流程走的,看着也不复杂,跑起来访问 7000 端口显示:{"error":"not found"}
Ironboy
2022-09-24 19:47:36 +08:00
想要火起来的话,可以结合一些场景,像比如像 Clubhouse 做成的语音社交应用。或者像做成 Omeglel 国际网友语言学习平台。希望对 op 有帮助!

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

https://yangjunhui.monster/t/828646

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

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

© 2021 V2EX