From a7aa2eaf76e60e076f77f4747acb8816172d1be4 Mon Sep 17 00:00:00 2001 From: Winlin Date: Sun, 1 Sep 2024 06:40:16 +0800 Subject: [PATCH] Fix #3767: RTMP: Do not response empty data packet. v6.0.153 v7.0.12 (#4162) If SRS responds with this empty data packet, FFmpeg will receive an empty stream, like `Stream #0:0: Data: none` in following logs: ```bash ffmpeg -i rtmp://localhost:11935/live/livestream # Stream #0:0: Data: none # Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 30 kb/s # Stream #0:2: Video: h264 (High), yuv420p(progressive), 768x320 [SAR 1:1 DAR 12:5], 212 kb/s, 25 fps, 25 tbr, 1k tbn ``` This won't cause the player to fail, but it will inconvenience the user significantly. It may also cause FFmpeg slower to analysis the stream, see #3767 --------- Co-authored-by: Jacob Su --- trunk/doc/CHANGELOG.md | 2 ++ trunk/src/core/srs_core_version6.hpp | 2 +- trunk/src/core/srs_core_version7.hpp | 2 +- trunk/src/protocol/srs_protocol_rtmp_stack.cpp | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index b6f396c5c8..0bea6e3cc2 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -7,6 +7,7 @@ The changelog for SRS. ## SRS 7.0 Changelog +* v7.0, 2024-08-31, Merge [#4162](https://github.com/ossrs/srs/pull/4162): Fix #3767: RTMP: Do not response empty data packet. v7.0.12 (#4162) * v7.0, 2024-08-31, Merge [#4164](https://github.com/ossrs/srs/pull/4164): HTTP-FLV: Notify connection to expire when unpublishing. v7.0.11 (#4164) * v7.0, 2024-08-24, Merge [#4157](https://github.com/ossrs/srs/pull/4157): Fix crash when quiting. v7.0.10 (#4157) * v7.0, 2024-08-24, Merge [#4156](https://github.com/ossrs/srs/pull/4156): Build: Fix srs_mp4_parser compiling error. v7.0.9 (#4156) @@ -23,6 +24,7 @@ The changelog for SRS. ## SRS 6.0 Changelog +* v6.0, 2024-08-31, Merge [#4162](https://github.com/ossrs/srs/pull/4162): Fix #3767: RTMP: Do not response empty data packet. v6.0.153 (#4162) * v6.0, 2024-08-31, Merge [#4164](https://github.com/ossrs/srs/pull/4164): HTTP-FLV: Notify connection to expire when unpublishing. v6.0.152 (#4164) * v6.0, 2024-08-24, Merge [#4157](https://github.com/ossrs/srs/pull/4157): Fix crash when quiting. v6.0.151 (#4157) * v6.0, 2024-08-24, Merge [#4156](https://github.com/ossrs/srs/pull/4156): Build: Fix srs_mp4_parser compiling error. v6.0.150 (#4156) diff --git a/trunk/src/core/srs_core_version6.hpp b/trunk/src/core/srs_core_version6.hpp index 28d5d9219e..c5007030a3 100644 --- a/trunk/src/core/srs_core_version6.hpp +++ b/trunk/src/core/srs_core_version6.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 6 #define VERSION_MINOR 0 -#define VERSION_REVISION 152 +#define VERSION_REVISION 153 #endif diff --git a/trunk/src/core/srs_core_version7.hpp b/trunk/src/core/srs_core_version7.hpp index 84ef6eefd6..a97cb36974 100644 --- a/trunk/src/core/srs_core_version7.hpp +++ b/trunk/src/core/srs_core_version7.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 7 #define VERSION_MINOR 0 -#define VERSION_REVISION 11 +#define VERSION_REVISION 12 #endif \ No newline at end of file diff --git a/trunk/src/protocol/srs_protocol_rtmp_stack.cpp b/trunk/src/protocol/srs_protocol_rtmp_stack.cpp index 7b1a20395e..2e75b0d4ff 100644 --- a/trunk/src/protocol/srs_protocol_rtmp_stack.cpp +++ b/trunk/src/protocol/srs_protocol_rtmp_stack.cpp @@ -2569,7 +2569,8 @@ srs_error_t SrsRtmpServer::start_play(int stream_id) } // onStatus(NetStream.Data.Start) - if (true) { + // We should not response this packet, or there is an empty stream "Stream #0:0: Data: none" in FFmpeg. + if (false) { SrsOnStatusDataPacket* pkt = new SrsOnStatusDataPacket(); pkt->data->set(StatusCode, SrsAmf0Any::str(StatusCodeDataStart)); if ((err = protocol->send_and_free_packet(pkt, stream_id)) != srs_success) {