crtmpserver分析与组网
时间:
2019-05-12 17:25:26
阅读:
202
评论:
收藏:
0
[点我收藏+]
简单介绍: crtmpserver是一款不错的开源流媒体server,用c++语言编写,跨平台。 官方介绍crtmpserver不仅支持adobe rtmp协议,还支持其他经常使用的协议: . To and from Flash (RTMP,RTMPE, RTMPS, RTMPT, RTMPTE) . To and from embedded devices: Android, IP cameras, Hardware encoders . From iOS devices . IP-TV using MPEG-TS and RTSP/RTCP/RTP protocols 一、结构图 crtmpserver从生产环境使用的情况来看,每天都在用,从几十M到上百M的流量不等,执行几个月无宕机, CPU, 内存各方面性能指标稳定。还是比較惬意的。 当然官方还提示有改进的商业版的版本号“EvoStream”。假设不差钱。能够买商业版,也算支持作者辛苦的付出。 日常使用,开源版本号已经足够。
下图1是我整理的画的crtmpserver结构图,按层次划分。分为下面几大部分: . 网络层: 操作系统的网络模型相关, Linux平台epoll, FreeBSD平台kqueue, Windows平台select . 协议层: RTMP,SIP SDP。HTTP。TS, RTP等协议的处理 . 媒体层: 处理媒体的codec, 如mp3, mp4, flv, aac H.264等 . 应用层: 一系列应用,如admin, http/https, liveflv, dns等。 我们也能够扩展自己的协议。如图中应用层红色模块部分所看到的: ? 二、组网 crtmpserver还支持简单的负载集群,仅仅须要把配置文件里配置主从关系。 推到主上的媒体流自然从上面也有,Viewer能够分散开从从server上拉媒体流。 例如以下图所看到的: 详细配置示比例如以下: 改动主server的crtmpserver.lua ? ? { ? ? ? name="proxypublish", ? ? ? description="Application for forwarding streams to another RTMP server", ? ? ? protocol="dynamiclinklibrary", ? ? ? acceptors = ? ? ? { ? ? ? ? { ? ? ? ? ? ip="0.0.0.0", ? ? ? ? ? port=6665, ? ? ? ? ? ? ? ? ? ? ? ? ? ? -- 主server接收RTMP流的端口 ? ? ? ? ? --protocol="inboundLiveFlv" ? ? ? ? ? protocol="inboundRtmp" ? ? ? ? }, ? ? ? }, ? ? ? abortOnConnectError=true, ? ? ? targetServers = ? ? ? { ? ? ? ? { ? ? ? ? ? targetUri="rtmp://192.168.1.115/live", ? -- 从server的URL ? ? ? ? ? targetStreamType="live", -- (live, record or append) ? ? ? ? ? localStreamName="proxytest", ? ? ? ? ? ?-- 推送到从server的流 ? ? ? ? ? keepAlive=true ? ? ? ? }, ? ? ? }, ? ? }, ? 启动主,多server;这样,推送到主server的流“proxytest",在从server上也能观看了;
crtmpserver分析与组网
原文:https://www.cnblogs.com/mqxnongmin/p/10852855.html