From 91e1726920026a502259ef16dd09bb18a36d69ea Mon Sep 17 00:00:00 2001 From: dexter <178529795@qq.com> Date: Tue, 10 May 2022 15:30:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E6=97=B6=E4=BF=AE=E5=A4=8D=E5=90=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=8E=A8=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/client.go b/client.go index 6088020..ec01e43 100644 --- a/client.go +++ b/client.go @@ -67,6 +67,20 @@ type RTSPPusher struct { gortsplib.Transport } +func (p *RTSPPusher) OnEvent(event any) { + switch v := event.(type) { + case *engine.AudioFrame: + for _, pack := range v.RTP { + p.Client.WritePacketRTP(p.audioTrackId, &pack.Packet) + } + case *engine.VideoFrame: + for _, pack := range v.RTP { + p.Client.WritePacketRTP(p.videoTrackId, &pack.Packet) + } + default: + p.RTSPSubscriber.OnEvent(event) + } +} func (p *RTSPPusher) Connect() error { if p.Transport == gortsplib.TransportTCP { p.Transport = gortsplib.TransportUDP @@ -86,7 +100,8 @@ func (p *RTSPPusher) Connect() error { if err = p.Client.Start(u.Scheme, u.Host); err != nil { return err } - return nil + _, err = p.Client.Options(u) + return err } func (p *RTSPPusher) Push() (err error) { var u *base.URL @@ -97,9 +112,8 @@ func (p *RTSPPusher) Push() (err error) { } }() startTime := time.Now() - for p.tracks == nil { - time.Sleep(time.Millisecond * 100) - if time.Since(startTime) > time.Second*5 { + for len(p.tracks) < 2 { + if time.Sleep(time.Second); time.Since(startTime) > time.Second*10 { return fmt.Errorf("timeout") } }