想问下开发一款实时房间语音聊天的软件类似 yy,需要花多少钱。运营的话在线 5000 人的话需要多大的带宽,什么配置的服务器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ckk163
V2EX    问与答

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

  •  
  •   ckk163 2015-08-24 12:17:28 +08:00 10054 次点击
    这是一个创建于 3713 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    65 条回复    2015-08-24 20:33:20 +08:00
    402645707
        1
    402645707  
       2015-08-24 12:40:47 +08:00 via Android
    同时在线 5000 人
    阿里云 10 月杭州大会欢迎你
    loading
        2
    loading  
       2015-08-24 12:43:04 +08:00 via Android
    早上看到知乎一个地方, yy 一个月,要差不多 2 亿块~
    lsylsy2
        3
    lsylsy2  
       2015-08-24 12:45:08 +08:00
    @loading 语音的话大概不用这么多?是因为做了视频直播才带宽暴涨的吧
    jamesfuxk
        4
    jamesfuxk  
       2015-08-24 12:48:47 +08:00
    好像是要不错的带宽才能支持这么多人同时在线语音的哦
    loading
        5
    loading  
       2015-08-24 12:48:51 +08:00 via Android
    @lsylsy2 人多,而且不卡不延时这些要求其实比视频要求更好。因为你看别人玩,和自己玩是不同的,卡几次就换软件,你觉得呢?
    loading
        6
    loading  
       2015-08-24 12:55:30 +08:00 via Android
    loading
        7
    loading  
       2015-08-24 12:58:05 +08:00 via Android
    上面提到的 yy 是 一季度… 2015Q2 , 1.3 亿!
    ckk163
        8
    ckk163  
    OP
       2015-08-24 13:35:42 +08:00
    感谢各位的热心回复,补充下不是 yy 的全部功能就一个房间实时聊天的,原来有个比较老的软件 teamspeak ,只是实现房间 1-20 人然后有很多房间能够实时语音聊天这样的功能。不考虑视频或者语音直播。
    ljbha007
        9
    ljbha007  
       2015-08-24 13:48:42 +08:00
    建议用腾讯的云服务 毕竟是自己老本行:
    http://www.qcloud.com/product/avc.html
    ljbha007
        10
    ljbha007  
       2015-08-24 13:50:11 +08:00
    用这个开发成本很低 但是使用费用大概 5000 人峰值是 15000 一个月
    ss098
        11
    ss098  
       2015-08-24 13:50:42 +08:00 via iPad
    据我感觉在使用 YY 时流量跑的不是太快,约 10 KByte / 秒,有时不到,场景是几个小伙伴时断时续的聊天。

    如果有优化良好的通讯协议,比如 10 KByte / 秒,那么每 MBits 可以支撑约 10 人。可以得出 5000 人至少需要 0.5 GBits 宽带。
    ckk163
        12
    ckk163  
    OP
       2015-08-24 14:04:29 +08:00
    @ljbha007 看了下腾讯的那个 计费简单粗暴呀 而且客户端开发得照腾讯的规则来比较受限制。其实我是想服务端和客户端能自主开发然后买带宽和服务器
    ljbha007
        13
    ljbha007  
       2015-08-24 14:11:35 +08:00
    @ckk163 其实有那个预算自己买服务器和带宽也不成问题
    ljbha007
        14
    ljbha007  
       2015-08-24 14:12:04 +08:00
    @ckk163 最近也在研究这个 感觉用 webrtc+turn 服务器是个可行的方案
    eae29qvc
        15
    eae29qvc  
       2015-08-24 14:12:32 +08:00
    需求简单的话 2 、 3 个月可以搞定
    5000 人大概 2-5MB 下行 50-100MB/s 上行(根据语音质量还有房间人数)
    一台 4 核服务器可以跑 5 万人左右(优化好的话可以更多)
    wy315700
        16
    wy315700  
       2015-08-24 14:16:34 +08:00   1
    @ss098
    不是这么算的,
    假如你发送语音的是 10KB/S ,一个聊天室有 100 人的话,你的语音是要发送给 100 人,假如 100 人同时在说话,那就要发送 100*100 = 10000 份,也就是 100MB/S
    ckk163
        17
    ckk163  
    OP
       2015-08-24 14:18:10 +08:00
    如果可以开发 软件在开房间后 语音的传输是 p2p 式的就好了 ,比如说房间有 5 个人聊天这 5 个的语音流可以不经过服务器而是说话本人只传输到其他人
    ckk163
        18
    ckk163  
    OP
       2015-08-24 14:20:07 +08:00
    @ss098 你这个计算的应该是 yy 使用的人所要用的带宽,不是 yy 客户端和服务端之间的带宽需求吧
    ss098
        19
    ss098  
       2015-08-24 14:22:43 +08:00 via iPad
    @wy315700 是的,是我考虑不周,多谢指出。

    @ckk163 场景就是我在跟几个小伙伴聊天,我实际使用的流量,据此推测服务器流量。
    akira
        20
    akira  
       2015-08-24 14:24:37 +08:00
    软件开发成本还好,后期带宽费用比较贵。

    另外,单台服务器肯定不能满足负荷的。
    ckk163
        21
    ckk163  
    OP
       2015-08-24 14:37:00 +08:00
    关键看能不能开发 p2p 式的 如果可以的话就可以极大压缩客户端与服务端直接的带宽需求,不知道有没有内行人进来指点下
    ckk163
        22
    ckk163  
    OP
       2015-08-24 14:39:44 +08:00
    @eae29qvc 可以给个联系方式 qq 啥的指点下嘛?
    lty1993
        23
    lty1993  
       2015-08-24 14:45:03 +08:00
    @wy315700

    这很明显不对的

    以纯语音 G729 为例,需要消耗 31.2Kbps 的带宽每路,每个用户需要 2 路,一上一下,也就是 62.4Kbps 。

    一个聊天室有 100 个人,就是 62.4Kbps * 100 。

    100 个人 10000 倍什么鬼?你的服务器只转发数据,客户端 Mixing ?你逗我?
    eae29qvc
        24
    eae29qvc  
       2015-08-24 14:49:21 +08:00
    @ckk163 p2p 要考虑的因素太多了,各种穿透,以国内的网络环境很麻烦,举个最简单的例子,一个 50 个人的房间,你要跟 49 个人说话, 2kB 每秒,也就是你需要 49x2=98kB 的上传带宽,国内的带宽大部分是上下行不对等的,标称 4m 的带宽也就 256kb 的上行,根本达不到要求
    eae29qvc
        25
    eae29qvc  
       2015-08-24 14:51:04 +08:00
    @lty1993 事实上就是客户端混合,服务器混合处理不了那么多数据
    lty1993
        26
    lty1993  
       2015-08-24 14:51:58 +08:00
    @eae29qvc 是的,这个场景完全不适合 P2P 。而且再加上 Voice Activity Detection 基本上可以服务器下行可以压缩到很小很小。
    ckk163
        27
    ckk163  
    OP
       2015-08-24 14:54:24 +08:00
    @eae29qvc 是这么计算的吗?我感觉这个解释是一个人说了一句话 50 人房间的话要传输 49 次在同一时间。不可以只传输一次然后有客户端负责协调复制到其他 49 个客户端吗 不知道我这个理解是不是可以实现
    lty1993
        29
    lty1993  
       2015-08-24 14:55:46 +08:00
    @eae29qvc 我这边 FreeSwitch 轻松处理 5000+路的 Conference Call 。。

    G711 双 E5 96G 内存
    eae29qvc
        30
    eae29qvc  
       2015-08-24 14:58:18 +08:00
    @ckk163 同步怎么办,语音实时性要求很高的,按你那么搞一个人说了一句话,下一句话不知道什么时候传过来,然后就各种断断续续的,还有每个人听到的声音的先后顺序都不一样怎么搞
    ckk163
        31
    ckk163  
    OP
       2015-08-24 14:59:30 +08:00
    @lty1993 96G 内存!!!!这是预算为多少路电话会议准备的呀 弄了多少的带宽呀
    eae29qvc
        32
    eae29qvc  
       2015-08-24 15:00:22 +08:00
    @lty1993 需求不一样吧,我这边要大量进行融合,每个房间都要多人同时说话,测了下扛不住
    lty1993
        33
    lty1993  
       2015-08-24 15:09:46 +08:00
    @eae29qvc 话说你跑的什么平台?

    不过我觉得性能实在不够。。。可以上 Cisco 的硬件 UCM ,或者 PCIE 的 Encode/Decode 卡。。。

    4134 Transit 这么贵,省下带宽的钱轻轻松松买硬件设备阿。如果客户端 mixing ,这是指数倍节约带宽阿。
    ckk163
        34
    ckk163  
    OP
       2015-08-24 15:12:59 +08:00
    不知道你们有没研究过 比邻 那个房间聊天是怎么实现的 我感觉他那个好像是 p2p 的
    eae29qvc
        35
    eae29qvc  
       2015-08-24 15:15:50 +08:00
    @lty1993 为了赶需求搞的,就我一个人弄了 3 个月。。现在一共就跑了两台服务器
    你说的我研究下,多谢提醒
    ckk163
        36
    ckk163  
    OP
       2015-08-24 15:19:10 +08:00
    @eae29qvc 不知可否看下你那个 3 个月的项目
    eae29qvc
        37
    eae29qvc  
       2015-08-24 15:20:44 +08:00
    @ckk163 ...那我会被开的
    ckk163
        38
    ckk163  
    OP
       2015-08-24 15:21:41 +08:00
    @eae29qvc 我不是说程序方面的 我是说界面其他可以公开的
    ckk163
        39
    ckk163  
    OP
       2015-08-24 15:23:15 +08:00
    @eae29qvc 主要是想看这个项目的需求是不是跟我想的有多少共同点
    eae29qvc
        40
    eae29qvc  
       2015-08-24 15:25:13 +08:00
    @ckk163 这个还真看不了。。不是独立的程序,是别的程序调用的,需要特定条件才能打开
    wy315700
        41
    wy315700  
       2015-08-24 15:25:58 +08:00
    @lty1993 你每个人发出去的 要发给 100 人,如果 100 人同时说话呢,聊天室不是只能一个人说其他人听,是可以同时说话的
    eae29qvc
        42
    eae29qvc  
       2015-08-24 15:26:31 +08:00
    @ckk163 你可以试下上面我发的那两个开源项目,跟他们差不多
    ckk163
        43
    ckk163  
    OP
       2015-08-24 15:26:43 +08:00
    @eae29qvc 调用的那个程序可以公开吗
    lty1993
        44
    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
        45
    eae29qvc  
       2015-08-24 15:31:52 +08:00
    @ckk163 给你也进不去的,需要账号,你就想象成一个大型同性交友平台就好了。。
    lty1993
        46
    lty1993  
       2015-08-24 15:34:41 +08:00
    @wy315700 对阿,每个人都只有和服务器的一上一下两个 Channel ,所有人都可以同时说话和听到别的所有人说的话阿

    服务器会去把所有人 Uplink 的音频信号 Mix 阿。然后发给每个客户的只是 Mix 后的那一路音频阿。
    ckk163
        47
    ckk163  
    OP
       2015-08-24 15:34:41 +08:00
    @eae29qvc 。。。还同性 好具体~~
    wy315700
        48
    wy315700  
       2015-08-24 15:39:24 +08:00
    @lty1993
    客户端可以定向屏蔽某个人的,比如 100 个人屏蔽的都不一样,服务器是不是要 mix 100 次
    ckk163
        49
    ckk163  
    OP
       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
        50
    eae29qvc  
       2015-08-24 16:05:16 +08:00
    @ckk163 嗯,不过有个最大同时说话人数的限制,要不带宽真的是指数级的,目前限制在 5 个
    lty1993
        51
    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
        52
    ljbha007  
       2015-08-24 16:18:33 +08:00
    @ckk163 p2p 的方案 webrtc 就可以解决
    ljbha007
        53
    ljbha007  
       2015-08-24 16:19:25 +08:00
    @ckk163 但是人多了的话 效果会大打折扣
    ckk163
        54
    ckk163  
    OP
       2015-08-24 16:23:16 +08:00
    @ljbha007 我初步设想房间的人数限制在 9 人
    eae29qvc
        55
    eae29qvc  
       2015-08-24 16:28:03 +08:00
    @ckk163 一个房间 9 个人吗?那我觉得不需要考虑带宽问题了。。
    ckk163
        56
    ckk163  
    OP
       2015-08-24 16:35:46 +08:00
    @eae29qvc 恩 一个房间限制 9 人 然后初期的话限制房间数到 1000
    ckk163
        57
    ckk163  
    OP
       2015-08-24 16:37:22 +08:00
    @eae29qvc 限制到 9 人的话 我按照刚才那个链接里的带宽需求算了下 一般用户的带宽都可以满足 剩下的就是可以不可以以 p2p 的方式来解决这个问题了
    ljbha007
        58
    ljbha007  
       2015-08-24 16:38:31 +08:00
    @ckk163 那完全可以用 webrtc
    eae29qvc
        59
    eae29qvc  
       2015-08-24 16:39:08 +08:00
    @ckk163 9 个人带宽不是问题,服务器一个核都跑不满
    ljbha007
        60
    ljbha007  
       2015-08-24 16:40:08 +08:00
    @ckk163 你试试 google 的 demo

    需要翻墙: https://apprtc.appspot.com/r/987435469
    ckk163
        61
    ckk163  
    OP
       2015-08-24 16:44:28 +08:00
    @ljbha007 看到一个帅哥~~
    ljbha007
        62
    ljbha007  
       2015-08-24 16:48:35 +08:00
    @ckk163 哈哈哈 这个就是 p2p 的线路 视频+语音流量在 10KB/s 左右 光语音大概 1KB
    可以选择走服务器中转 也可以直接连 客户端代码决定的
    ckk163
        63
    ckk163  
    OP
       2015-08-24 16:58:06 +08:00
    发现 V2EX 不能私信呀 临时建了个 qq 群 185797723 进来聊聊呀

    @ljbha007
    @eae29qvc
    @lty1993
    @wy315700
    lcqtdwj
        64
    lcqtdwj  
       2015-08-24 17:14:20 +08:00
    b 站么。。。
    offer
        65
    offer  
       2015-08-24 20:33:20 +08:00
    @ckk163 已经申请加入
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5188 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 08:51 PVG 16:51 LAX 01:51 JFK 04:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86