mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-09-27 05:35:57 +08:00
update
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
global:
|
||||
loglevel: info
|
||||
loglevel: debug
|
||||
rtmp:
|
||||
publish:
|
||||
# pubvideo: false
|
@@ -38,7 +38,7 @@ func (r *AVRingReader) DecConfChanged() bool {
|
||||
}
|
||||
|
||||
func NewAVRingReader(t *AVTrack) *AVRingReader {
|
||||
// t.Debug("reader +1", zap.Int32("count", t.ReaderCount.Add(1)))
|
||||
t.Debug("reader +1", "count", t.ReaderCount.Add(1))
|
||||
return &AVRingReader{
|
||||
Track: t,
|
||||
}
|
||||
@@ -51,7 +51,7 @@ func (r *AVRingReader) readFrame() (err error) {
|
||||
}
|
||||
// 超过一半的缓冲区大小,说明Reader太慢,需要丢帧
|
||||
if r.mode != SUBMODE_BUFFER && r.State == READSTATE_NORMAL && r.Track.LastValue.Sequence-r.Value.Sequence > uint32(r.Track.Size/2) && r.Track.IDRing != nil && r.Track.IDRing.Value.Sequence > r.Value.Sequence {
|
||||
// r.Warn("reader too slow", zap.Uint32("lastSeq", r.Track.LastValue.Sequence), zap.Uint32("seq", r.Value.Sequence))
|
||||
r.Warn("reader too slow", "lastSeq", r.Track.LastValue.Sequence, "seq", r.Value.Sequence)
|
||||
return r.Read(r.Track.IDRing)
|
||||
}
|
||||
return
|
||||
@@ -61,12 +61,12 @@ func (r *AVRingReader) ReadFrame(mode int) (err error) {
|
||||
r.mode = mode
|
||||
switch r.State {
|
||||
case READSTATE_INIT:
|
||||
// r.Info("start read", zap.Int("mode", mode))
|
||||
r.Info("start read", "mode", mode)
|
||||
startRing := r.Track.Ring
|
||||
if r.Track.IDRing != nil {
|
||||
startRing = r.Track.IDRing
|
||||
} else {
|
||||
// r.Warn("no IDRring")
|
||||
r.Warn("no IDRring")
|
||||
}
|
||||
switch mode {
|
||||
case SUBMODE_REAL:
|
||||
@@ -92,14 +92,14 @@ func (r *AVRingReader) ReadFrame(mode int) (err error) {
|
||||
}
|
||||
r.SkipTs = r.FirstTs - r.StartTs
|
||||
r.FirstSeq = r.Value.Sequence
|
||||
// r.Info("first frame read", zap.Duration("firstTs", r.FirstTs), zap.Uint32("firstSeq", r.FirstSeq))
|
||||
r.Info("first frame read", "firstTs", r.FirstTs, "firstSeq", r.FirstSeq)
|
||||
case READSTATE_FIRST:
|
||||
if r.Track.IDRing.Value.Sequence != r.FirstSeq {
|
||||
if err = r.Read(r.Track.IDRing); err != nil {
|
||||
return
|
||||
}
|
||||
r.SkipTs = r.Value.Timestamp - r.beforeJump - r.StartTs - 10*time.Millisecond
|
||||
// r.Info("jump", zap.Uint32("skipSeq", r.Track.IDRing.Value.Sequence-r.FirstSeq), zap.Duration("skipTs", r.SkipTs))
|
||||
r.Info("jump", "skipSeq", r.Track.IDRing.Value.Sequence-r.FirstSeq, "skipTs", r.SkipTs)
|
||||
r.State = READSTATE_NORMAL
|
||||
} else {
|
||||
if err = r.readFrame(); err != nil {
|
||||
|
@@ -79,6 +79,7 @@ func (p *Publisher) RemoveSubscriber(subscriber *Subscriber) (err error) {
|
||||
func (p *Publisher) AddSubscriber(subscriber *Subscriber) (err error) {
|
||||
p.Lock()
|
||||
defer p.Unlock()
|
||||
subscriber.Publisher = p
|
||||
p.Subscribers[subscriber] = struct{}{}
|
||||
switch p.State {
|
||||
case PublisherStateTrackAdded, PublisherStateWaitSubscriber:
|
||||
|
@@ -54,7 +54,7 @@ func Run(ctx context.Context, conf any) error {
|
||||
}
|
||||
|
||||
func (s *Server) Run(ctx context.Context, conf any) (err error) {
|
||||
s.Logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{})).With("server", serverIndexG.Add(1))
|
||||
s.Logger = slog.With("server", serverIndexG.Add(1))
|
||||
s.Context, s.CancelCauseFunc = context.WithCancelCause(ctx)
|
||||
s.config.HTTP.ListenAddrTLS = ":8443"
|
||||
s.config.HTTP.ListenAddr = ":8080"
|
||||
@@ -179,7 +179,9 @@ func (s *Server) eventLoop() {
|
||||
}
|
||||
|
||||
func (s *Server) onUnsubscribe(subscriber *Subscriber) {
|
||||
if subscriber.Publisher != nil {
|
||||
subscriber.Publisher.RemoveSubscriber(subscriber)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) onUnpublish(publisher *Publisher) {
|
||||
|
@@ -83,7 +83,8 @@ func (s *Subscriber) Handle(audioHandler, videoHandler any) {
|
||||
}
|
||||
if at := s.Publisher.GetAudioTrack(a1); at != nil {
|
||||
ar = NewAVRingReader(at)
|
||||
ar.Logger = s.Logger.With("reader", a1.Name())
|
||||
ar.Logger = s.Logger.With("reader", a1.String())
|
||||
ar.Info("start read")
|
||||
ah = reflect.ValueOf(audioHandler)
|
||||
}
|
||||
}
|
||||
@@ -93,7 +94,8 @@ func (s *Subscriber) Handle(audioHandler, videoHandler any) {
|
||||
}
|
||||
if vt := s.Publisher.GetVideoTrack(v1); vt != nil {
|
||||
vr = NewAVRingReader(vt)
|
||||
vr.Logger = s.Logger.With("reader", v1.Name())
|
||||
vr.Logger = s.Logger.With("reader", v1.String())
|
||||
vr.Info("start read")
|
||||
vh = reflect.ValueOf(videoHandler)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user