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: // 纯音频流的情况下需要切割文件