mirror of
https://github.com/gowvp/gb28181.git
synced 2026-04-22 23:17:19 +08:00
update readme
This commit is contained in:
@@ -2,12 +2,18 @@
|
||||
|
||||
Web Video Platform 是一个基于 GB/T28181-2022 标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持 NAT 穿透,支持海康、大华、宇视等品牌的 IPC、NVR 接入。支持国标级联。
|
||||
|
||||
|
||||
## 在线演示平台
|
||||
|
||||
+ [演示平台线路 1 (推荐),点击访问](http://gowvp.golang.space:15123/)
|
||||
+ [演示平台线路 2 (3MB 带宽手下留情)](http://wvp.golang.space/)
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
## 应用场景:
|
||||
+ 支持浏览器无插件播放摄像头视频。
|
||||
+ 支持国标设备(摄像机、平台、NVR等)设备接入
|
||||
@@ -15,6 +21,7 @@ Web Video Platform 是一个基于 GB/T28181-2022 标准实现的开箱即用的
|
||||
+ 支持国标级联。多平台级联。跨网视频预览。
|
||||
+ 支持跨网网闸平台互联。
|
||||
|
||||
|
||||
## 快速开始
|
||||
|
||||
待 1.0 版本发布才提供安装包,如果你是 Go 语言开发者并熟悉 docker,可以继续~~~
|
||||
@@ -123,7 +130,8 @@ ZLM使用文档 [github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZLMediaKit
|
||||
在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议
|
||||
|
||||
## GoWVP, GB/T28181 交流群
|
||||

|
||||
|
||||
<img src="./wechat.jpg" alt="wechat" width="240"/>
|
||||
|
||||
## QA
|
||||
|
||||
@@ -149,7 +157,9 @@ ZLM使用文档 [github.com/ZLMediaKit/ZLMediaKit](https://github.com/ZLMediaKit
|
||||
|
||||
> 有没有使用资料?
|
||||
|
||||
开发中...
|
||||
[RTMP 推拉流规则](https://juejin.cn/post/7463046634558718004)
|
||||
|
||||
码字中...
|
||||
|
||||
|
||||
## 开源库
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ version = 1
|
||||
IP = "127.0.0.1"
|
||||
HTTPPort = 8080
|
||||
Secret = "s1kPE7bzqKeHUaVcp8dCA0jeB8yxyFq4"
|
||||
WebHookIP = "192.168.10.25"
|
||||
WebHookIP = "192.168.10.28"
|
||||
RTPPortRange = "20000,20500"
|
||||
|
||||
[Log]
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
@@ -92,11 +92,14 @@ func setupRouter(r *gin.Engine, uc *Usecase) {
|
||||
}
|
||||
|
||||
stream := push.App + "/" + push.Stream
|
||||
|
||||
host := c.Request.Host
|
||||
if l := strings.Split(c.Request.Host, ":"); len(l) == 2 {
|
||||
host = l[0]
|
||||
}
|
||||
var session string
|
||||
if !push.IsAuthDisabled && push.Session != "" {
|
||||
session = "?session=" + push.Session
|
||||
}
|
||||
|
||||
return &playOutput{
|
||||
App: push.App,
|
||||
@@ -106,14 +109,14 @@ func setupRouter(r *gin.Engine, uc *Usecase) {
|
||||
Label: "默认线路",
|
||||
WSFLV: fmt.Sprintf("ws://%s:%d/%s.live.flv", host, svr.Ports.WsFLV, stream),
|
||||
HTTPFLV: fmt.Sprintf("http://%s:%d/%s.live.flv", host, svr.Ports.FLV, stream),
|
||||
RTMP: fmt.Sprintf("rtmp://%s:%d/%s", host, svr.Ports.RTMP, stream),
|
||||
RTMP: fmt.Sprintf("rtmp://%s:%d/%s", host, svr.Ports.RTMP, stream) + session,
|
||||
RTSP: fmt.Sprintf("rtsp://%s:%d/%s", host, svr.Ports.RTSP, stream),
|
||||
},
|
||||
{
|
||||
Label: "SSL 线路",
|
||||
WSFLV: fmt.Sprintf("wss://%s:%d/%s.live.flv", host, svr.Ports.WsFLVs, stream),
|
||||
HTTPFLV: fmt.Sprintf("https://%s:%d/%s.live.flv", host, svr.Ports.FLVs, stream),
|
||||
RTMP: fmt.Sprintf("rtmps://%s:%d/%s", host, svr.Ports.RTMPs, stream),
|
||||
RTMP: fmt.Sprintf("rtmps://%s:%d/%s", host, svr.Ports.RTMPs, stream) + session,
|
||||
RTSP: fmt.Sprintf("rtsps://%s:%d/%s", host, svr.Ports.RTSPs, stream),
|
||||
},
|
||||
},
|
||||
|
||||
@@ -91,6 +91,7 @@ func (w WebHookAPI) onPlay(c *gin.Context, in *onPublishInput) (DefaultOutput, e
|
||||
case "rtmp":
|
||||
params, err := url.ParseQuery(in.Params)
|
||||
if err != nil {
|
||||
slog.Info("onPlay 鉴权失败", "err", err)
|
||||
return DefaultOutput{Code: 1, Msg: err.Error()}, nil
|
||||
}
|
||||
session := params.Get("session")
|
||||
@@ -99,6 +100,7 @@ func (w WebHookAPI) onPlay(c *gin.Context, in *onPublishInput) (DefaultOutput, e
|
||||
Stream: in.Stream,
|
||||
Session: session,
|
||||
}); err != nil {
|
||||
slog.Info("onPlay 鉴权失败", "err", err)
|
||||
return DefaultOutput{Code: 1, Msg: err.Error()}, nil
|
||||
}
|
||||
case "rtsp":
|
||||
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 147 KiB |
Reference in New Issue
Block a user