Skip to content

基于webscoket 实现m7s 流媒体之间平台级联

License

Notifications You must be signed in to change notification settings

BaoAnDaDui/plugin-erwscascade

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

预览插件

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注意事项

About

基于webscoket 实现m7s 流媒体之间平台级联

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 82.9%
  • Go 17.1%