From 665d1d23ccd13a604890781f1067d80c1e60119a Mon Sep 17 00:00:00 2001 From: wanghaoxi3000 Date: Wed, 27 May 2020 20:57:48 +0800 Subject: [PATCH] =?UTF-8?q?bugfix=201.=20=E6=B7=BB=E5=8A=A0timeout?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=90=8E=EF=BC=8C=E5=87=BA=E7=8E=B0=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=97=A0=E6=B3=95=E6=92=AD=E6=94=BE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=9A=82=E6=97=B6=E5=8E=BB=E9=99=A4=202.=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8url=E5=85=A8=E8=B7=AF=E5=BE=84=E4=BA=A7?= =?UTF-8?q?=E7=94=9Fuuid=EF=BC=8C=E9=81=BF=E5=85=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=90=8C=E6=A0=B7host=E7=9A=84rtsp=E6=B5=81?= =?UTF-8?q?=E4=BA=A7=E7=94=9F=E5=90=8C=E6=A0=B7key=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=203.=20=E6=9B=B4=E6=96=B0Readme=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=A0=87=E6=B3=A8=E9=9C=80=E8=A6=81h264=E7=9A=84?= =?UTF-8?q?=E7=A0=81=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- service/rtsptrans.go | 4 +--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8d0342a..e03d085 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # gin-rtsp -基于[**JSMpeg**](https://github.com/phoboslab/jsmpeg/)的原理,在HTML页面上直接播放RTSP视频流,使用Gin框架开发。 +基于 [**JSMpeg**](https://github.com/phoboslab/jsmpeg/) 的原理,在HTML页面上直接播放RTSP视频流,使用Gin框架开发。 ## 主要模块 - API 接口:接收FFMPEG的推流数据和客户端的HTTP请求,将客户端需要播放的RTSP地址转换为一个对应的WebSocket地址,客户端通过这个WebSocket地址便可以直接播放视频,为了及时释放不再观看的视频流,这里设计为客户端播放时需要在每隔60秒的时间里循环请求这个接口,超过指定时间没有收到请求的话后台便会关闭这个视频流。 @@ -8,6 +8,8 @@ - WebSocket Manager:管理WebSocket客户端,将请求同一WebSocket地址的客户端添加到一个Group中,向各个Group广播对应的RTSP视频流,删除Group中已断开连接的客户端,释放空闲的Group。 +## 注意 +- 需要摄像头的码流为H264码流 ## 测试 项目需要运行在安装有FFMPEG程序的环境中。通过编写了一份Dockerfile已经封装好了需要的环境,可以使用Docker build后,以Docker的方式运行。 diff --git a/service/rtsptrans.go b/service/rtsptrans.go index 8ab87ec..ccd4686 100644 --- a/service/rtsptrans.go +++ b/service/rtsptrans.go @@ -36,7 +36,7 @@ func (service *RTSPTransSrv) Service() *serializer.Response { } // 多个客户端需要播放相同的RTSP流地址时,保证返回WebSocket地址相同 - processCh := uuid.NewV3(uuid.NamespaceURL, splitList[1]).String() + processCh := uuid.NewV3(uuid.NamespaceURL, simpleString).String() if ch, ok := processMap.Load(processCh); ok { *ch.(*chan int) <- 1 } else { @@ -81,8 +81,6 @@ func runFFMPEG(rtsp string, playCh string) (*exec.Cmd, io.WriteCloser, error) { "-rtsp_transport", "tcp", "-re", - "-timeout", - "5", "-i", rtsp, "-q",