想问下开发一款实时房间语音聊天的软件类似 yy,需要花多少钱。运营的话在线 5000 人的话需要多大的带宽,什么配置的服务器

2015-08-24 12:17:28 +08:00
 ckk163

如题
或许问题很菜 希望可以真诚的解答下疑惑。感谢~~

9653 次点击
所在节点    问与答
65 条回复
wy315700
2015-08-24 15:25:58 +08:00
@lty1993 你每个人发出去的 要发给 100 人,如果 100 人同时说话呢,聊天室不是只能一个人说其他人听,是可以同时说话的
eae29qvc
2015-08-24 15:26:31 +08:00
@ckk163 你可以试下上面我发的那两个开源项目,跟他们差不多
ckk163
2015-08-24 15:26:43 +08:00
@eae29qvc 调用的那个程序可以公开吗
lty1993
2015-08-24 15:31:02 +08:00
@ckk163 我这边跑的 PBX ,并不是个聊天室系统。。。

理论上来说你需要写个客户端,用 SIP 或者 Skinny 或者 IAX2 作为语音通信, XMPP 作为文字通信,自己写个 REST API 用来给客户创建自己的聊天室。

然后连接 FreeSwitch/Asterisk 这类软电话交换机交换语音, eJabberd 用来处理文字,自己写个服务器端在用户创建聊天室的时候自动去电话交换机和 eJabberd 创建同 ID 的聊天室,然后把 ID 返回客户端。

客户端 Join 聊天室,就等于 VOIP 打聊天室的内线号码+XMPP 登陆那个聊天室。
eae29qvc
2015-08-24 15:31:52 +08:00
@ckk163 给你也进不去的,需要账号,你就想象成一个大型同性交友平台就好了。。
lty1993
2015-08-24 15:34:41 +08:00
@wy315700 对阿,每个人都只有和服务器的一上一下两个 Channel ,所有人都可以同时说话和听到别的所有人说的话阿

服务器会去把所有人 Uplink 的音频信号 Mix 阿。然后发给每个客户的只是 Mix 后的那一路音频阿。
ckk163
2015-08-24 15:34:41 +08:00
@eae29qvc 。。。还同性 好具体~~
wy315700
2015-08-24 15:39:24 +08:00
@lty1993
客户端可以定向屏蔽某个人的,比如 100 个人屏蔽的都不一样,服务器是不是要 mix 100 次
ckk163
2015-08-24 15:57:54 +08:00
@eae29qvc 你那个项目的带宽需求的计算方法和这个的计算方法接近吗 同样人数的话需求的带宽是不是和这个差不多的 https://support.teamspeakusa.com/index.php?/Knowledgebase/Article/View/7/12/how-much-bandwidth-does-teamspeak-require
eae29qvc
2015-08-24 16:05:16 +08:00
@ckk163 嗯,不过有个最大同时说话人数的限制,要不带宽真的是指数级的,目前限制在 5 个
lty1993
2015-08-24 16:05:26 +08:00
@wy315700 是的。就算没有定向屏蔽一样需要 MIX 100 次。自己的 Upstream 不会被 Mix 进自己的 Downstream 。

PCM Mixing 并不需要很多 CPU Cycle ,服务器 Mixing 最大的 CPU 消耗是在这 100 路 Encoding 和 100 路 Decoding 上。

编解码现成板卡一大堆,你要高兴还可以买块 NETFPGA-SUME , G711 和 PCIE 通信的 Verilog 代码满地都是,基本上可以单卡轻松完成 7000+路 G711 的编码 /解码。
ljbha007
2015-08-24 16:18:33 +08:00
@ckk163 p2p 的方案 webrtc 就可以解决
ljbha007
2015-08-24 16:19:25 +08:00
@ckk163 但是人多了的话 效果会大打折扣
ckk163
2015-08-24 16:23:16 +08:00
@ljbha007 我初步设想房间的人数限制在 9 人
eae29qvc
2015-08-24 16:28:03 +08:00
@ckk163 一个房间 9 个人吗?那我觉得不需要考虑带宽问题了。。
ckk163
2015-08-24 16:35:46 +08:00
@eae29qvc 恩 一个房间限制 9 人 然后初期的话限制房间数到 1000
ckk163
2015-08-24 16:37:22 +08:00
@eae29qvc 限制到 9 人的话 我按照刚才那个链接里的带宽需求算了下 一般用户的带宽都可以满足 剩下的就是可以不可以以 p2p 的方式来解决这个问题了
ljbha007
2015-08-24 16:38:31 +08:00
@ckk163 那完全可以用 webrtc
eae29qvc
2015-08-24 16:39:08 +08:00
@ckk163 9 个人带宽不是问题,服务器一个核都跑不满
ljbha007
2015-08-24 16:40:08 +08:00
@ckk163 你试试 google 的 demo

需要翻墙: https://apprtc.appspot.com/r/987435469

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

https://tanronggui.xyz/t/215526

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

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

© 2021 V2EX