mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
fix: track set bug
This commit is contained in:
2
api.go
2
api.go
@@ -68,7 +68,7 @@ func (s *Server) api_Stream_AnnexB_(rw http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
rw.Header().Set("Content-Type", "application/octet-stream")
|
||||
reader := pkg.NewAVRingReader(publisher.VideoTrack.AVTrack)
|
||||
reader := pkg.NewAVRingReader(publisher.VideoTrack.AVTrack, "Origin")
|
||||
err = reader.StartRead(publisher.VideoTrack.GetIDR())
|
||||
if err != nil {
|
||||
http.Error(rw, err.Error(), http.StatusInternalServerError)
|
||||
|
||||
@@ -42,10 +42,11 @@ func (r *AVRingReader) DecConfChanged() bool {
|
||||
return r.LastCodecCtx != r.Track.ICodecCtx
|
||||
}
|
||||
|
||||
func NewAVRingReader(t *AVTrack) *AVRingReader {
|
||||
func NewAVRingReader(t *AVTrack, dataType string) *AVRingReader {
|
||||
t.Debug("create reader")
|
||||
return &AVRingReader{
|
||||
Track: t,
|
||||
Track: t,
|
||||
Logger: t.With("reader", dataType),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +168,11 @@ func (r *AVRingReader) ReadFrame(conf *config.Subscribe) (err error) {
|
||||
}
|
||||
}
|
||||
r.Delay = r.Track.LastValue.Sequence - r.Value.Sequence
|
||||
r.Log(context.TODO(), task.TraceLevel, r.Track.FourCC().String(), "ts", r.Value.Timestamp, "delay", r.Delay)
|
||||
if r.Track.ICodecCtx != nil {
|
||||
r.Log(context.TODO(), task.TraceLevel, r.Track.FourCC().String(), "ts", r.Value.Timestamp, "delay", r.Delay)
|
||||
} else {
|
||||
r.Warn("no codec")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ func NewAVTrack(args ...any) (t *AVTrack) {
|
||||
case *AVTrack:
|
||||
t.Logger = v.Logger.With("subtrack", t.FrameType.String())
|
||||
t.RingWriter = v.RingWriter
|
||||
t.ready = util.NewPromiseWithTimeout(v.ready.Context, time.Second*5)
|
||||
case *config.Publish:
|
||||
t.RingWriter = NewRingWriter(v.RingSize)
|
||||
t.BufferRange[0] = v.BufferTime
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package m7s
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
@@ -67,11 +66,11 @@ type AVTracks struct {
|
||||
}
|
||||
|
||||
func (t *AVTracks) Set(track *AVTrack) {
|
||||
t.Lock()
|
||||
defer t.Unlock()
|
||||
t.AVTrack = track
|
||||
track.BaseTs = t.baseTs
|
||||
t.Lock()
|
||||
t.Add(track)
|
||||
t.Unlock()
|
||||
}
|
||||
|
||||
func (t *AVTracks) SetMinBuffer(start time.Duration) {
|
||||
@@ -101,7 +100,7 @@ func (t *AVTracks) CheckTimeout(timeout time.Duration) bool {
|
||||
}
|
||||
|
||||
func (t *AVTracks) CreateSubTrack(dataType reflect.Type) (track *AVTrack) {
|
||||
track = NewAVTrack(dataType, t.AVTrack, util.NewPromise(context.TODO()))
|
||||
track = NewAVTrack(dataType, t.AVTrack)
|
||||
track.WrapIndex = t.Length
|
||||
t.Add(track)
|
||||
return
|
||||
|
||||
@@ -186,11 +186,8 @@ func (s *Subscriber) createAudioReader(dataType reflect.Type, startAudioTs time.
|
||||
if err := at.WaitReady(); err != nil {
|
||||
return
|
||||
}
|
||||
ar := NewAVRingReader(at)
|
||||
s.AudioReader = ar
|
||||
ar.StartTs = startAudioTs
|
||||
ar.Logger = s.Logger.With("reader", dataType.String())
|
||||
ar.Info("start read")
|
||||
s.AudioReader = NewAVRingReader(at, dataType.String())
|
||||
s.AudioReader.StartTs = startAudioTs
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -213,11 +210,8 @@ func (s *Subscriber) createVideoReader(dataType reflect.Type, startVideoTs time.
|
||||
if err := vt.WaitReady(); err != nil {
|
||||
return
|
||||
}
|
||||
vr := NewAVRingReader(vt)
|
||||
vr.StartTs = startVideoTs
|
||||
s.VideoReader = vr
|
||||
vr.Logger = s.Logger.With("reader", dataType.String())
|
||||
vr.Info("start read")
|
||||
s.VideoReader = NewAVRingReader(vt, dataType.String())
|
||||
s.VideoReader.StartTs = startVideoTs
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user