rtmpmate是一款集流媒体直播、websocket聊天室、http静态文件服务等功能于一身的高性能服务器。该服务器使用Golang编写,支持跨平台。
服务器:http://studease.cn/rtmpmate.html
播放器:http://studease.cn/playease.html
聊天室:http://studease.cn/chatease.html
> 支持rtmp、rtsp(tcp)、http/ws-flv、http/ws-fmp4、mpeg-dash、hls等多种直播协议和标准;
> 支持flv录制(可远程控制),及实时回放功能;
> 支持websocket弹幕聊天功能;
> 支持直播流的发布、播放、录制,以及聊天室的连接、控制等事件推送;
> 支持origin-edge集群、代理,及负载均衡;
> 支持跨域保护;
> 支持定制开发(额外付费)。
所有协议内部均可配置多个上游服务器,以name分类,分类为服务器内部/协议间可见。例如,rtmp里面配置了name=web的upstream,与http里面配置的同名服务器会被划分为同一类,也就是实际上定义了两台name=web的服务器(虽然在不同的地方定义),在使用时按照权重(weight)实行负载均衡。
> name:服务器名称/分类。
> address:IP地址。
> port:端口号。
> flag:标识("normal" "backup" "down"),默认="normal"。
> weight:权重,默认=5。
> timeout:超时时间(单位=秒),默认=5。
> max_fails:最大失败次数,达到限制数后flag设置为"down",默认=0(无限制)。
> listen:监听端口,默认=1935。
> timeout:连接最大闲置时间,默认=65。
> root:--
> cors:--
> chunk_size:rtmp协议层参数,最小值=128,默认=4096。
> cache:发送缓冲区帧数,默认=512。
> target:--
> location:路由模块。
>> pattern:路由路径,默认="/"。
>> handler:--
>> on_xxx:事件推送接口。
>> dvr:录像机。
>> proxy:代理/集群。
2.1 dvr
要启用http-flv功能,须有一个id="DVR_FLV"的flv录像机;要启用mpeg-dash、hls功能,须有一个id="DVR_FMP4"的fmp4录像机。启用最大值限定(max_xxx),并成功触发条件时,DVR_FLV会将后续数据写入新文件(注意启用unique,否则会被覆盖),DVR_FMP4会生成一个切片。
> id:特殊场景下用于访问该录像机(例如:远程控制)。
> name:录像机名称("DVR_FLV" "DVR_FMP4")。
> mode:录像模式("audio" "video" "all" "autoAudio" "autoVideo" "auto" "keyframe" "advanced" "manual" "off"),常用="all"。
> directory:存储目录,可用变量"$(app)" "$(instance)",支持格式化时间。
> file:文件名(name="DVR_FLV")、文件夹名(name="DVR_FMP4"),可用变量"%s"(streamName)。
> unique:文件名是否唯一(仅name="DVR_FLV"),示例:sample-1554107911.flv。
> append:是否为追加模式。
> max_size:最大文件大小,单位=byte。
> max_time:最大录像时长,单位=ms。
> max_frames:最大帧数。
> on_record:录像开始的回调(仅DVR_FLV)。
> on_record_done:录像结束的回调(仅DVR_FLV)。
> listen:监听端口,默认=80。
> timeout:连接最大闲置时间,默认=65。
> root:根目录。
> cors:可访问的域,多个域以","分隔,"*"表示所有域,默认=""。
> server_name:域名/IP正则匹配pattern,用于将二级域名重定向到子文件夹。
> location:路由模块。
>> pattern:路由路径,默认="/"。
>> handler:注册的回调函数名("http_file" "rtmp_control" "chat")。
3.1 handler http_file
提供静态文件分发。要启用http-flv、mpeg-dash、hls等功能,需开启http服务的http_file handler功能。
> cache:发送缓冲区帧数,默认=512。
3.2 handler rtmp_control
远程控制rtmp行为。
3.2.1 record
> start:http://192.168.4.248/rtmp/control/record/start?dvr=dvr1&app=live&inst=_definst_&name=sample
> stop:http://192.168.4.248/rtmp/control/record/stop?dvr=dvr1&app=live&inst=_definst_&name=sample
3.3 handler chat
> protocol:websocket握手阶段Sec-Websocket-Protocol响应值。
> cache:发送缓冲区消息数,默认=32。
> query:消息存储器,目前只支持sqlite3。
> on_connect:连接事件推送接口。
> on_control:权限管理事件推送接口。
> visitor:游客模式。
> group:频道内分组。
>> maximum:最大分组数,0表示无限制。
>> capacity:组容量,0表示无限制。
> user:在线人数推送服务。
>> period:推送周期,单位=秒。