fix: stop subscribe when error

This commit is contained in:
langhuihui
2023-09-28 08:53:36 +08:00
parent 1de72b595f
commit 19bdc05f76
3 changed files with 15 additions and 6 deletions

4
hls.go
View File

@@ -72,7 +72,7 @@ func (h *HLSRecorder) OnEvent(event any) {
ProgramClockReferenceBase: uint64(v.DTS),
}
h.WriteAudioFrame(v, pes)
h.BLL.WriteTo(h.File)
_, err = h.BLL.WriteTo(h.File)
h.Recycle()
h.Clear()
h.audio_cc = pes.ContinuityCounter
@@ -87,7 +87,7 @@ func (h *HLSRecorder) OnEvent(event any) {
if err = h.WriteVideoFrame(v, pes); err != nil {
return
}
h.BLL.WriteTo(h.File)
_, err = h.BLL.WriteTo(h.File)
h.Recycle()
h.Clear()
h.video_cc = pes.ContinuityCounter

8
mp4.go
View File

@@ -80,11 +80,15 @@ func (r *MP4Recorder) OnEvent(event any) {
} else {
audioData = util.ConcatBuffers(append(net.Buffers{v.ADTS.Value}, v.AUList.ToBuffers()...))
}
r.Write(r.audioId, audioData, uint64(v.AbsTime+(v.PTS-v.DTS)/90), uint64(v.AbsTime))
if err = r.Write(r.audioId, audioData, uint64(v.AbsTime+(v.PTS-v.DTS)/90), uint64(v.AbsTime)); err != nil {
r.Stop(zap.Error(err))
}
}
case VideoFrame:
if r.videoId != 0 {
r.Write(r.videoId, util.ConcatBuffers(v.GetAnnexB()), uint64(v.AbsTime+(v.PTS-v.DTS)/90), uint64(v.AbsTime))
if err = r.Write(r.videoId, util.ConcatBuffers(v.GetAnnexB()), uint64(v.AbsTime+(v.PTS-v.DTS)/90), uint64(v.AbsTime)); err != nil {
r.Stop(zap.Error(err))
}
}
}
}

9
raw.go
View File

@@ -1,6 +1,7 @@
package record
import (
"go.uber.org/zap"
. "m7s.live/engine/v4"
"m7s.live/engine/v4/codec"
"m7s.live/engine/v4/track"
@@ -71,10 +72,14 @@ func (r *RawRecorder) OnEvent(event any) {
r.AddTrack(v)
case AudioFrame:
r.Recorder.OnEvent(event)
v.WriteRawTo(r)
if _, err := v.WriteRawTo(r); err != nil {
r.Stop(zap.Error(err))
}
case VideoFrame:
r.Recorder.OnEvent(event)
v.WriteAnnexBTo(r)
if _, err := v.WriteAnnexBTo(r); err != nil {
r.Stop(zap.Error(err))
}
default:
r.IO.OnEvent(v)
}