如何搭建基于surging的分布式直播流媒体

前言

这几天一直在优化测试dotnetty,代码是基于https://github.com/cuteant/SpanNetty,基础上修改优化的,然后发布搭建了分布式rtmp直播服务,内存一直稳定在70mb左右,然后大家可以下载进行测试,也可以观看直播推流的电影,一共有两部,一部是黑衣人,一部是大红包。还有要求性能比较高的,还是关闭链路式跟踪,一般可以用在调试测试和并发不高的系统上,微服务调试用上了链路跟踪大大减少了开发调试时间,就比如某个链路调用出现错误,可以点开查看相关日志,就可以跳到相关日志列表,然后点开某一条日志,就可以看到详细的报错信息

HttpFlv:http://117.72.121.2:281/httpflv.html (黑衣人)

HttpFlv:http://117.72.121.2:281/httpflv1.html (大红包)

rtmp:rtmp://117.72.121.2:76/live1/livestream2 (黑衣人)

rtmp:rtmp://117.72.121.2:76/live1/livestream3 (大红包)

凯亚 (Kayak) 是什么?

凯亚(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还有多协议适配(TCP,MQTT,UDP,CoAP,HTTP,Grpc,websocket,rtmp,httpflv,webservice,等),通过灵活多样的配置适配能够接入不同厂家不同协议等设备。并且通过设备告警,消息通知,数据可视化等功能。能够让你能快速建立起微服务物联网平台系统。

凯亚物联网平台:http://117.72.121.2:3100(用户名:fanly 密码:123456)

链路跟踪Skywalking V8:http://117.72.121.2:8080/

surging 微服务引擎开源地址:https://github.com/fanliang11/surging(后面surging 会移动到microsurging进行维护)

搭建直播流媒体

下载地址:

通过网盘分享的文件:rtmp.zip

链接: https://pan.baidu.com/s/12dVChSd1K5Tu7ajv6FC98Q?pwd=hn9u 提取码: hn9u

以下是目录:

点击startup.bat 就能开启分布式直播推流

在bin 文件中有3.bat,4.bat ,里面是ffmpeg推流3.mp4和4.mp4,需要拷贝两部视频到本目录下,然后点击3.bat和4.bat(你也可以利用OBS Studio等直播软件进行推流)

以下是对应配置(可以通过surgingSettings.json进行修改)

|-----------|-------|-----------|-------------------------------------|----------|-------------|-------------|-------------------------------------------------------------------|
| 宿主机地址 | 宿主机端口 | 是否支持服务器推流 | 推流地址 | RtmpPort | HttpFlvPort | 文件目录 | httflv 文件 |
| 127.0.0.1 | 83 | 是 | live1/livestream2 live1/livestream3 | 76 | 8080 | rtmpserver | httpflv3.html(live1/livestream2) httpflv4.html(live1/livestream3) |
| 127.0.0.1 | 82 | 否 | live1/livestream2 live1/livestream3 | 77 | 8081 | rtmpserver1 | httpflv1.html(live1/livestream2) httpflv5.html(live1/livestream3) |
| 127.0.0.1 | 84 | 否 | live1/livestream2 live1/livestream3 | 74 | 8082 | rtmpserver2 | httpflv2.html(live1/livestream2) |

HttpFlv客户端页面

以下是测试结果,通过推流live1/livestream2,live1/livestream3, 打开6个httpflv 和1个rtmp, 运行1小时10分钟,内存一直稳定在70MB,CPU一直在0.5左右波动。

通过以上测试,直播推流已经非常稳定了,那么像抖音,快手只要推流做下压缩,帧率在12左右,那么推流大小应该在200kb/s 左右,然后10G带宽, 一台服务器可以支持8000在线观看直播,那么300台就能支持240万,按照正常是这样算的,如果加上还有压缩算法,弹性扩容,推荐流量,聊天,刷礼物,打PK,特效背景等一些功能就可能不止这些服务器,估计要上千台。

总结

以上是基于surging 做的分布式推流,这些能满足部分需要,如果需要强大的功能,如压缩算法,弹性扩容等功能请关注凯亚物联网平台,后续会添加流媒体管理。

相关推荐
Micro麦可乐8 小时前
最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制
java·spring boot·安全·spring·spring cloud·微服务·spring security
cesske8 小时前
springboot 微服务下部署AI服务
java·人工智能·spring boot·elasticsearch·微服务
mask哥19 小时前
云原生&微服务&devops&项目管理英文表述详解
微服务·云原生·scrum·devops·agile
hstar95271 天前
二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计
java·spring·微服务·设计模式·架构
计算机毕设定制辅导-无忧学长1 天前
微服务架构中的 RabbitMQ:异步通信与服务解耦(一)
微服务·架构·rabbitmq
_r0bin_1 天前
微服务——网关
微服务·云原生·架构