From d7d96230ffed592f33dedcee1e4aafa221a2ab25 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Wed, 27 Sep 2023 14:38:07 +0200 Subject: [PATCH] rtmp: fix compatibility issue with some DJI drones (#2375) (#2409) --- go.mod | 2 +- go.sum | 4 ++-- internal/rtmp/reader.go | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 398804fa..48bb5c6b 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/aler9/writerseeker v1.1.0 github.com/bluenviron/gohlslib v1.0.3 github.com/bluenviron/gortsplib/v4 v4.2.0 - github.com/bluenviron/mediacommon v1.4.0 + github.com/bluenviron/mediacommon v1.4.1-0.20230924203439-7ac007e2ac2d github.com/datarhei/gosrt v0.5.4 github.com/fsnotify/fsnotify v1.6.0 github.com/gin-gonic/gin v1.9.1 diff --git a/go.sum b/go.sum index 25fae414..8f42b97b 100644 --- a/go.sum +++ b/go.sum @@ -16,8 +16,8 @@ github.com/bluenviron/gohlslib v1.0.3 h1:FMHevlIrrZ67uzCXmlTSGflsfYREEtHb8L9BDyf github.com/bluenviron/gohlslib v1.0.3/go.mod h1:R/aIsSxLI61N0CVMjtcHqJouK6+Ddd5YIihcCr7IFIw= github.com/bluenviron/gortsplib/v4 v4.2.0 h1:EbIMqkFxFo/iG5Hkld+Flew9R8ORKnuxlgUyFdpd5Rk= github.com/bluenviron/gortsplib/v4 v4.2.0/go.mod h1:wz9d4Tn2qS/mexc+BnvNeWzlNOpyaHzNK6SXxtg4mfM= -github.com/bluenviron/mediacommon v1.4.0 h1:nPQIxAJQPlKBTPWZJZbP646XytPr7EJ63afwdHiPNLM= -github.com/bluenviron/mediacommon v1.4.0/go.mod h1:/vlOVSebDwzdRtQONOKLua0fOSJg1tUDHpP+h9a0uqM= +github.com/bluenviron/mediacommon v1.4.1-0.20230924203439-7ac007e2ac2d h1:VbzIg0t5HKfyLbuzWeNU64JdOtTUp981Fx9ljdMRGpM= +github.com/bluenviron/mediacommon v1.4.1-0.20230924203439-7ac007e2ac2d/go.mod h1:/vlOVSebDwzdRtQONOKLua0fOSJg1tUDHpP+h9a0uqM= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= diff --git a/internal/rtmp/reader.go b/internal/rtmp/reader.go index eeb23bac..3353811a 100644 --- a/internal/rtmp/reader.go +++ b/internal/rtmp/reader.go @@ -189,6 +189,9 @@ func tracksFromMetadata(conn *Conn, payload []interface{}) (format.Format, forma } else if tmsg.Type == message.VideoTypeAU && tmsg.IsKeyFrame { nalus, err := h264.AVCCUnmarshal(tmsg.Payload) if err != nil { + if err == h264.ErrAVCCNoNALUs { + continue + } return nil, nil, err } @@ -477,6 +480,9 @@ func (r *Reader) OnDataH265(cb OnDataH26xFunc) { case *message.Video: au, err := h264.AVCCUnmarshal(msg.Payload) if err != nil { + if err == h264.ErrAVCCNoNALUs { + return nil + } return fmt.Errorf("unable to decode AVCC: %v", err) } @@ -485,6 +491,9 @@ func (r *Reader) OnDataH265(cb OnDataH26xFunc) { case *message.ExtendedFramesX: au, err := h264.AVCCUnmarshal(msg.Payload) if err != nil { + if err == h264.ErrAVCCNoNALUs { + return nil + } return fmt.Errorf("unable to decode AVCC: %v", err) } @@ -493,6 +502,9 @@ func (r *Reader) OnDataH265(cb OnDataH26xFunc) { case *message.ExtendedCodedFrames: au, err := h264.AVCCUnmarshal(msg.Payload) if err != nil { + if err == h264.ErrAVCCNoNALUs { + return nil + } return fmt.Errorf("unable to decode AVCC: %v", err) } @@ -525,6 +537,9 @@ func (r *Reader) OnDataH264(cb OnDataH26xFunc) { case message.VideoTypeAU: au, err := h264.AVCCUnmarshal(msg.Payload) if err != nil { + if err == h264.ErrAVCCNoNALUs { + return nil + } return fmt.Errorf("unable to decode AVCC: %v", err) }