Skip to content

New RTSP source plugin with live streaming support

Nirbheek Chauhan requested to merge nirbheek/gst-plugins-rs:rtspsrc2 into main

GST_PLUGIN_FEATURE_RANK=rtspsrc2:1 gst-play-1.0 [URI]

Features:

  • Live streaming N audio and N video
    • With RTCP-based A/V sync
  • Lower transports: TCP, UDP, UDP-Multicast
  • RTP, RTCP SR, RTCP RR
  • OPTIONS DESCRIBE SETUP PLAY TEARDOWN
  • Custom UDP socket management, does not use udpsrc / udpsink
  • Supports both rtpbin and the rtpbin2 rust rewrite
    • Set USE_RTPBIN2=1 to use rtpbin2 (needs !1426)
  • Properties:
    • protocols selection and priority (NEW!)
    • location supports rtsp[ut]://
    • port-start instead of port-range

Co-Authored-by: @tpm

Please see net/rtsp/README.md for more details! I've copied some of it below:

Rust rewrite of rtspsrc, with the purpose of fixing the fundamentally broken architecture of rtspsrc. There are some major problems with rtspsrc:

  1. Element states are linked to RTSP states, which causes unfixable glitching and issues, especially in shared RTSP media
  2. The command loop is fundamentally broken and buggy, which can cause RTSP commands such as SET_PARAMETER and GET_PARAMETER to be lost
  3. The combination of the above two causes unfixable deadlocks when seeking
  4. Parsing of untrusted RTSP messages from the network was done in C with the GstRTSPMessage API.
  5. Parsing of untrusted SDP from the network was done in C with the GstSDPMessage API
Edited by Nirbheek Chauhan

Merge request reports