Opened 6 years ago

Last modified 6 years ago

#7009 new defect

RTMP handshake problem

Reported by: Yukun Guo Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: rtmp
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

When FFmpeg connects to RTMP server via digest ("complex") handshake, FFmpeg takes inconsistent ways at the step of sending C2: If it is a publisher, it sends C2 as an echo of S1, OTOH if it's a subscriber, it creates a new packet of C2 consisting of 1504B random-data and 32B signature. In my option the latter one is the expected behavior, while the formal one is only correct in the context of simple handshake. The code shows that publishing and subscribing fall into different branches from this line: https://github.com/FFmpeg/FFmpeg/blob/release/3.4/libavformat/rtmpproto.c#L1300. And RTMP publishing feature was introduced in https://github.com/FFmpeg/FFmpeg/commit/6bf22e18d1357f11048902e2c5ac9f814cd123fa.

Although the official RTMP specification obviously lacks a section on digest handshaking, I have checked several open source implementations like nginx-rtmp, Red5 and SRS, and they all take the random-data-and-signature way.

Change History (1)

comment:1 by Carl Eugen Hoyos, 6 years ago

Component: ffmpegavformat
Keywords: rtmp added

Please consider sending a patch made with git format-patch to the development mailing list.

Note: See TracTickets for help on using tickets.