crtmpserver分析与组网

简介:
crtmpserver是一款不错的开源流媒体服务器,用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

1、结构图
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等,
咱们也能够扩展本身的协议,如图中应用层红色模块部分所示:


2、组网
crtmpserver还支持简单的负载集群,只须要把配置文件中配置主从关系,
推到主上的媒体流天然从上面也有,Viewer能够分散开从从服务器上拉媒体流。
以下图所示:

具体配置示例以下:
修改主服务器的crtmpserver.lua
    {
      name="proxypublish",
      description="Application for forwarding streams to another RTMP server",
      protocol="dynamiclinklibrary",
      acceptors =
      {
        {
          ip="0.0.0.0",
          port=6665,                             -- 主服务器接收RTMP流的端口
          --protocol="inboundLiveFlv"
          protocol="inboundRtmp"
        },
      },
      abortOnConnectError=true,
      targetServers =
      {
        {
          targetUri="rtmp://192.168.1.115/live",   -- 从服务器的URL
          targetStreamType="live", -- (live, record or append)c++

          targetStreamName="stream1", 服务器

          localStreamName="proxytest",            -- 推送到从服务器的流
          keepAlive=true
        },
      },
    },

启动主,多服务器;这样,推送到主服务器的流“proxytest",在从服务器上也能观看了;网络

相关文章
相关标签/搜索