[FFmpeg-devel] [PATCH v2 2/2] avformat/rtsp: Send mode=record instead of mode=receive in Transport header

Michael Niedermayer michael at niedermayer.cc
Tue Jan 16 02:20:56 EET 2024


On Mon, Jan 15, 2024 at 10:37:25PM +0200, Paul Orlyk wrote:
> Fixes server compatibility issues with rtspclientsink GStreamer plugin.
> 
> > From specification:
> RFC 7826 "Real-Time Streaming Protocol Version 2.0" (https://datatracker.ietf.org/doc/html/rfc7826), section 18.54:
>    mode: The mode parameter indicates the methods to be supported for
>          this session.  The currently defined valid value is "PLAY".  If
>          not provided, the default is "PLAY".  The "RECORD" value was
>          defined in RFC 2326; in this specification, it is unspecified
>          but reserved.  RECORD and other values may be specified in the
>          future.
> RFC 2326 "Real Time Streaming Protocol (RTSP)" (https://datatracker.ietf.org/doc/html/rfc2326), section 12.39:
>    mode:
>           The mode parameter indicates the methods to be supported for
>           this session. Valid values are PLAY and RECORD. If not
>           provided, the default is PLAY.
> 
> mode=receive was always like this, from the initial commit 'a8ad6ffa rtsp: Add listen mode'.
> 
> For comparison, Wowza was used to push RTSP stream to. Both GStreamer and FFmpeg had no issues.
> Here is the capture of Wowza responding to SETUP request:
> 200 OK
> CSeq: 3
> Server: Wowza Streaming Engine 4.8.26+4 build20231212155517
> Cache-Control: no-cache
> Expires: Mon, 15 Jan 2024 19:40:31 GMT
> Transport: RTP/AVP/UDP;unicast;client_port=11640-11641;mode=record;source=172.17.0.2;server_port=6976-6977
> Date: Mon, 15 Jan 2024 19:40:31 GMT
> Session: 1401457689;timeout=60
> 
> Test setup:
>     Server: ffmpeg -loglevel trace -y -rtsp_flags listen -i rtsp://0.0.0.0:30800/live.stream t.mp4
>     FFmpeg client: ffmpeg -re -i "Big Buck Bunny - FULL HD 30FPS.mp4" -c:v libx264 -f rtsp rtsp://127.0.0.1:30800/live.stream
>     GStreamer client: gst-launch-1.0 videotestsrc is-live=true pattern=smpte ! queue ! videorate ! videoscale ! video/x-raw,width=640,height=360,framerate=60/1 ! timeoverlay font-desc="Sans, 84" halignment=center valignment=center ! queue ! videoconvert ! tee name=t t. ! x264enc bitrate=9000 pass=cbr speed-preset=ultrafast byte-stream=false key-int-max=15 threads=1 ! video/x-h264,profile=baseline ! queue ! rsink. audiotestsrc ! voaacenc ! queue ! rsink. t. ! queue ! autovideosink rtspclientsink name=rsink location=rtsp://localhost:30800/live.stream
> 
> Test results:
> modified FFmpeg client -> stock server    : ok
> stock FFmpeg client    -> modified server : ok
> modified FFmpeg client -> modified server : ok
> GStreamer client       -> modified server : ok
> 
> Signed-off-by: Paul Orlyk <paul.orlyk at gmail.com>
> ---
>  libavformat/rtspdec.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Thats a nice commit message
will apply

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Whats the most studid thing your enemy could do ? Blow himself up
Whats the most studid thing you could do ? Give up your rights and
freedom because your enemy blew himself up.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240116/b6b98546/attachment.sig>


More information about the ffmpeg-devel mailing list