From e513f0b02875d8f558bb30f6fedbcaf4dc2d148e Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 25 Apr 2021 16:41:24 +0200 Subject: [PATCH] RTMP client: avoid errors when there are no NALUs in the queue --- internal/clientrtmp/client.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/clientrtmp/client.go b/internal/clientrtmp/client.go index 0836bed9..540f2e41 100644 --- a/internal/clientrtmp/client.go +++ b/internal/clientrtmp/client.go @@ -295,7 +295,7 @@ func (c *Client) runRead() { } for _, nalu := range nalus { - // remove SPS, PPS and AUD, not needed by RTMP + // remove SPS, PPS and AUD, not needed by RTSP typ := h264.NALUType(nalu[0] & 0x1F) switch typ { case h264.NALUTypeSPS, h264.NALUTypePPS, h264.NALUTypeAccessUnitDelimiter: @@ -521,8 +521,9 @@ func (c *Client) runPublish() { } var outNALUs [][]byte + for _, nalu := range nalus { - // remove SPS, PPS and AUD, not needed by RTSP / RTMP + // remove SPS, PPS and AUD, not needed by RTSP typ := h264.NALUType(nalu[0] & 0x1F) switch typ { case h264.NALUTypeSPS, h264.NALUTypePPS, h264.NALUTypeAccessUnitDelimiter: @@ -532,6 +533,10 @@ func (c *Client) runPublish() { outNALUs = append(outNALUs, nalu) } + if len(outNALUs) == 0 { + continue + } + frames, err := h264Encoder.Encode(outNALUs, pkt.Time+pkt.CTime) if err != nil { return fmt.Errorf("ERR while encoding H264: %v", err)