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叢集、代理,及負載均衡;
> 支援跨域保護;
> 支援定制開發(額外付費)。
伺服器配置詳解
1. upstream
所有協定内部均可配置多個上遊伺服器,以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(無限制)。
2. rtmp server
> 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)。
3. http server
> 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:推送周期,機關=秒。