2024-03-21 00:06:19 +08:00
2024-03-21 00:06:19 +08:00
2024-03-20 23:50:21 +08:00
2024-03-20 23:50:21 +08:00
2024-03-17 22:55:02 +08:00
2024-03-17 23:18:13 +08:00
2024-03-20 23:50:21 +08:00
2024-03-20 23:50:21 +08:00
2024-03-21 00:06:19 +08:00
2024-03-20 23:50:21 +08:00
2024-03-20 23:50:21 +08:00

预览插件

image

主要功能

基于websocket 实现多个m7s级联

  • 支持http请求代理webscoket 代理),实现实时控制下级平台信令通道
  • 支持公网级联下级平台在局域网如4G 网络)
  • 支持一个端口级联http/https端口要求支持websocket
  • 支持音视频级联(下级平台推流到上级平台)
  • 支持推流协议: rtmp 推流rtsp 推流, websocket flv 推流等上级平台端口资源限制开放仅需http/https端口
  • rtmp 推流rtsp 推流功能是m7s 开源源插件功能,需要使能相关插件

插件地址

https://github.com/erroot/plugin-erwscascade.git

插件引入

import (
    _ "m7s.live/plugin/erwscascade/v4"
)

配置

websocket级联配置

erwscascade:
  cid: "test-c001"            #本机平台ID 不配置则随机uuid
  server:                     #级联上级平台配置支持同时接入多个上级平台
    -
      protocol: "wss"         #支持的协议ws,wss
      host: "47.111.28.16"
      port: 8441
      conextpath: ""
  push:
    repush: -1
    pushlist:
      njtv/glgc: ws://127.0.0.1:8450/erwscascade/wspush/njtv/glgc #推送本地流到上级平台新的streamPath 为 streamPath-cid

API

server API

  • /erwscascade/httpproxy?cid=test-c001&httpPath=[dympath] http协议透传接口

  • xx_m7s_url_xx 含义是 m7s 普通url 链接

  • cid: 客户端ID(必须)

  • httpPath: 代理请求的目的地址(必须)

  • 示例1请求下级平台test-c001,通过erwscascade ws 推流接口推流到上级 推送本地的流njtv/glgc 到上级平台 ws://127.0.0.1:8450/erwscascade/wspush/njtv/glgc 这个地址

http://127.0.0.1:8450/erwscascade/httpproxy/?cid=test-c001&httpPath=/erwscascade/api/push?streamPath=njtv/glgc&target=ws://127.0.0.1:8450/erwscascade/wspush/njtv/glgc

  • 示例2: 请求下级平台 test-c001, 通过rtmp 推流接口推送流到上级 推送本地的流njtv/glgc 到上级平台 rtmp://127.0.0.1:1945/njtv/glgc-rtmp-push 这个地址

http://127.0.0.1:8450/erwscascade/httpproxy/?cid=test-c001&httpPath=/rtmp/api/push?streamPath=njtv/glgc&target=rtmp://127.0.0.1:1945/njtv/glgc-rtmp-push

client API

erwscascade/api/push?target=[websocket地址]&streamPath=[流标识]

# websocket 消息体

type ProxyMessage struct {
	Url    string      `json:"url"`
	Header http.Header `json:"header"`
	Method string `json:"method"`
	Body   []byte `json:"body"`
}

type CascadingWsMessage struct {
	Sn   int         `json:"sn"`
	Type MessageType `json:"type"`
	Pad  []byte      `json:"pad"`
}
const (
	CInfo MessageType = iota
	HTTPProxyReq
	HTTPProxyRsp
	// 在此添加更多的枚举成员
)

使用erwscascade注意事项

Description
基于webscoket 实现m7s 流媒体之间平台级联
Readme MIT 3 MiB
Languages
HTML 82.9%
Go 17.1%