如何搭建基于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 做的分布式推流,这些能满足部分需要,如果需要强大的功能,如压缩算法,弹性扩容等功能请关注凯亚物联网平台,后续会添加流媒体管理。

相关推荐
青衫客368 小时前
基于 Python 构建的安全 gRPC 服务——TLS、mTLS 与 Casbin 授权实战
python·安全·微服务
虫师c13 小时前
分布式系统设计模式:从理论到实践
微服务·设计模式·系统架构·高可用·分布式系统
K_i13421 小时前
Docker、容器、虚拟机到底是什么
docker·微服务·云原生·容器·kubernetes
new_daimond1 天前
微服务网关技术详细介绍
微服务·云原生·架构
Light601 天前
领码方案|微服务与SOA的世纪对话(4):迁移与避坑——从 SOA 到微服务的演进路线图
微服务·云原生·架构·自动化运维·容器化·服务治理·渐进式迁移
虫师c1 天前
分布式系统实战:电商平台架构演进
微服务·架构·高并发·架构演进·分布式系统·电商架构
岁岁岁平安1 天前
分布式系统相关概念(单体、集群、分布式、分布式集群、微服务)
分布式·微服务
眠りたいです2 天前
基于脚手架微服务的视频点播系统-脚手架开发部分-brpc中间件介绍与使用及二次封装
c++·微服务·中间件·rpc·架构·brpc
眠りたいです2 天前
基于脚手架微服务的视频点播系统-脚手架开发部分-jsoncpp,protobuf,Cpp-httplib与WebSocketpp中间件介绍与使用
c++·websocket·微服务·中间件·json·protobuf·cpp-httplib
唐僧洗头爱飘柔95272 天前
【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
java·spring·spring cloud·微服务·架构·resttemplate·java微服务技术栈