From ab8e03475cd3b5bc0d0ba7e5bde8d3cc7d6b4084 Mon Sep 17 00:00:00 2001 From: langhuihui <178529795@qq.com> Date: Sun, 11 Jun 2023 13:25:25 +0800 Subject: [PATCH] fix: report error when can't create file to write MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit desc: 当无法创建文件时报错 --- flv.go | 4 ++++ hls.go | 2 +- mp4.go | 2 +- raw.go | 4 ++++ subscriber.go | 4 ++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/flv.go b/flv.go index 81fd867..557913e 100644 --- a/flv.go +++ b/flv.go @@ -137,6 +137,10 @@ func (r *FLVRecorder) OnEvent(event any) { } if file, err := r.CreateFileFn(filename, r.append); err == nil { r.SetIO(file) + } else { + r.Error("create file failed", zap.Error(err)) + r.Stop() + return } // 写入文件头 if !r.append { diff --git a/hls.go b/hls.go index 62e0e02..43496e4 100644 --- a/hls.go +++ b/hls.go @@ -53,9 +53,9 @@ func (h *HLSRecorder) OnEvent(event any) { return } if err = h.createHlsTsSegmentFile(); err != nil { + h.Stop() return } - go h.start() case AudioFrame: pes := &mpegts.MpegtsPESFrame{ diff --git a/mp4.go b/mp4.go index 1d83a02..17aef30 100644 --- a/mp4.go +++ b/mp4.go @@ -155,7 +155,7 @@ func (r *MP4Recorder) OnEvent(event any) { } r.AddTrack(v) case ISubscriber: - if r.ftyp != nil { + if r.ftyp != nil && r.Writer != nil { r.ftyp.Encode(r) r.Moov.Encode(r) go r.start() diff --git a/raw.go b/raw.go index 45c0fae..2c1f5cd 100644 --- a/raw.go +++ b/raw.go @@ -5,6 +5,7 @@ import ( "strconv" "time" + "go.uber.org/zap" . "m7s.live/engine/v4" "m7s.live/engine/v4/codec" "m7s.live/engine/v4/track" @@ -42,6 +43,9 @@ func (r *RawRecorder) OnEvent(event any) { } if file, err := r.CreateFileFn(filename, r.append); err == nil { r.SetIO(file) + } else { + r.Error("create file failed", zap.Error(err)) + r.Stop() } go r.start() case *track.Video: diff --git a/subscriber.go b/subscriber.go index e2a0300..7f4fed2 100644 --- a/subscriber.go +++ b/subscriber.go @@ -5,6 +5,7 @@ import ( "strconv" "time" + "go.uber.org/zap" . "m7s.live/engine/v4" ) @@ -40,6 +41,9 @@ func (r *Recorder) OnEvent(event any) { } if file, err := r.CreateFileFn(filename, r.append); err == nil { r.SetIO(file) + } else { + r.Error("create file failed", zap.Error(err)) + r.Stop() } case AudioFrame: // 纯音频流的情况下需要切割文件