diff --git a/container/flv/muxer.go b/container/flv/muxer.go index fdcc07a..932b261 100755 --- a/container/flv/muxer.go +++ b/container/flv/muxer.go @@ -56,6 +56,7 @@ type FLVWriter struct { buf []byte closed chan struct{} ctx *os.File + closedWriter bool } func NewFLVWriter(app, title, url string, ctx *os.File) *FLVWriter { @@ -131,6 +132,10 @@ func (writer *FLVWriter) Wait() { } func (writer *FLVWriter) Close(error) { + if writer.closedWriter { + return + } + writer.closedWriter = true writer.ctx.Close() close(writer.closed) } diff --git a/protocol/rtmp/stream.go b/protocol/rtmp/stream.go index 9ce1841..f793bb9 100755 --- a/protocol/rtmp/stream.go +++ b/protocol/rtmp/stream.go @@ -379,7 +379,7 @@ func (s *Stream) CheckAlive() (n int) { v := val.(*PackWriterCloser) if v.w != nil { //Alive from RWBaser, check last frame now - timestamp, if > timeout then Remove it - if !v.w.Alive() && s.isStart { + if !v.w.Alive() { log.Infof("write timeout remove") s.ws.Delete(key) v.w.Close(fmt.Errorf("write timeout"))