From patchwork Sat May 8 01:45:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: minlei sun X-Patchwork-Id: 27693 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp1035427iof; Fri, 7 May 2021 18:45:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxHwgDLouu2BHpLuSM0SunjU9YkCTOysBo8ubxW1lc/5d5xN2f9d4k/f9hUFrKe/yQQVh/F X-Received: by 2002:a17:906:edaf:: with SMTP id sa15mr13439122ejb.68.1620438333215; Fri, 07 May 2021 18:45:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620438333; cv=none; d=google.com; s=arc-20160816; b=nQU8SWvRlcdt1Ejr3nyWwa0LUWLxAriXmUFSsDWD4872AoP8AIFvaImkhWucGdq1BJ ARZhax3Dnmn6b4siKbfp2qaSKxjmwG8e13EsPOyzCLX2ttdvePKGhPAGk6hrFHcrIrj6 luiUQN2oeCNxANIDqIf05Xm7FYMT8cxAa1lscoKNJ1dRCZH5WAlnK1vSMnfc8h7seCmf E1q7PzzLWmy++igJq2yvR4ns2mQRvr7CgqlcK0ZpqVWngybEUlg9H7GDxH4xOdKzXOpe lV1D2DiSzTemB0Dk4UhkFyblyFYZey2fm6HKkLRZOosluafldDuzhhRzTKXY02fQdJcY X6UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=FKj+Uxzm2YCrpKqPgGINGY2qKI7tm5BoQu8omA6dOt0=; b=QcJbDznsqQjvER1z8ai7s5clzdYSSLRUd4j9c/AHZZtQs1r698/Jy2JIoegE8UH3Of 7NpOvL7+A3BeWJLSBMNdDswdaXAJeIh22tS7uwmvV9jWVncSM3uW0TQw25R22wyqOztx 10DdQgMT0r2r6n2fCEU3BCo1IcSYtq4UVROoqdxXJXIB7hsf2vNOJA83X1O+C3brL1DH pv6VZ62pXG0Wp1upvUSLIXFlwB++iMgNb8UvsP4W5DuwWKYgAMrpkfrp2bLfcBX96nUq slvBELumy+sV2RHrP7A48DijnAnW+ErHViD0YPdliT8kcQYgeJerP5215jDwXIjdCk6N iPFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w9si6215374edq.453.2021.05.07.18.45.32; Fri, 07 May 2021 18:45:33 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88BF9680700; Sat, 8 May 2021 04:45:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from epoint.com.cn (unknown [61.155.218.132]) by ffbox0-bg.mplayerhq.hu (Postfix) with SMTP id 91B2F680227 for ; Sat, 8 May 2021 04:45:21 +0300 (EEST) Received: from localhost.localdomain ([218.4.136.119]) (envelope-sender ) by 192.168.0.30 with ESMTP for ; Sat, 08 May 2021 09:45:04 +0800 X-WM-AuthFlag: YES X-WM-AuthUser: sunml@epoint.com.cn From: sunml@epoint.com.cn To: ffmpeg-devel@ffmpeg.org Date: Sat, 8 May 2021 09:45:12 +0800 Message-Id: <20210508014512.17225-1-sunml@epoint.com.cn> X-Mailer: git-send-email 2.30.1 (Apple Git-130) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1] Add ignore_rtcp option in rtsp X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Minlei Sun Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IBfhrKa6vqJA From: Minlei Sun Regarding ignore_rtcp flag, it is turned off by default. When some devices (such as hikvision iSecure Center Platform v1.3.xxx) rtsp stream contains rtcp data packets (may be non-standard), there will be a freeze when the output is rtmp stream. So when igore_rtcp is enabled, this situation can be solved. --- doc/protocols.texi | 3 +++ libavformat/rtsp.c | 1 + libavformat/rtsp.h | 5 +++++ libavformat/rtspdec.c | 2 ++ 4 files changed, 11 insertions(+) diff --git a/doc/protocols.texi b/doc/protocols.texi index 8371f83059..cac1300445 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -1175,6 +1175,9 @@ Set socket TCP I/O timeout in microseconds. @item user_agent Override User-Agent header. If not specified, it defaults to the libavformat identifier string. + +@item ignore_rtcp +Ignore rtcp packets in rtsp stream to avoid transcoding stuck. Default valule is 0. @end table When receiving data over UDP, the demuxer tries to reorder received packets diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 9f509a229f..8c3f9aaefe 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -97,6 +97,7 @@ const AVOption ff_rtsp_options[] = { { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC }, COMMON_OPTS(), { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC }, + { "ignore_rtcp", "when the rtcp packet is received in the rtsp stream, it will be ignored", OFFSET(ignore_rtcp), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DEC }, { NULL }, }; diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index 1310dd9c08..7d5d2c1c33 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -416,6 +416,11 @@ typedef struct RTSPState { */ char *user_agent; + /** + * ignore rtcp packet + */ + int ignore_rtcp; + char default_lang[4]; int buffer_size; int pkt_size; diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index 6e97c23330..c68f33e9ee 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -817,6 +817,8 @@ redo: } goto redo; found: + if (rt->ignore_rtcp && (id == 1 || id == 3 )) + goto redo; *prtsp_st = rtsp_st; return len; }