天天看點

FMP4流媒體直播伺服器支援的協定、标準和功能伺服器配置詳解

        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:推送周期,機關=秒。