crtmpserver分析与组网
2015-06-27 15:41
183 查看
转自:http://blog.chinaunix.net/uid-26000296-id-4273860.html
简介:
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
一、结构图
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可以分散开从从服务器上拉媒体流。
如下图所示:
具体配置示例如下:
修改主服务器的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)
localStreamName="proxytest", -- 推送到从服务器的流
keepAlive=true
},
},
},
启动主,多服务器;这样,推送到主服务器的流“proxytest",在从服务器上也能观看了;
简介:
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
一、结构图
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可以分散开从从服务器上拉媒体流。
如下图所示:
具体配置示例如下:
修改主服务器的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)
localStreamName="proxytest", -- 推送到从服务器的流
keepAlive=true
},
},
},
启动主,多服务器;这样,推送到主服务器的流“proxytest",在从服务器上也能观看了;
相关文章推荐
- 第十六周 项目一-平方根中的异常
- Ubuntu创建svn服务器并设置提交并更新到网站
- 我的.Net技术体系
- Android按钮点击监听事件的写法
- 关于下载图片后相册中找不到的问题
- 使用CXF和Spring发布Soap服务
- 吉隆坡兰卡威旅游信息整理
- EF 存储过程
- 如何自己编写一个easyui插件续
- Java基础 for循环增强语句的局限性
- ios 启动程序时隐藏状态栏,启动后显示状态栏
- 向Fragment传递数据
- android studio打包APK
- sed基础知识
- VMwave下Ubuntu扩展磁盘空间
- 利用tomcat发布WEB项目到内网和外网的方法
- linux 下的 vim 命令
- 装机必备
- 20150627原生js轮播器
- 【Unity3d】在编辑器中实现位操作(Bit)的编辑