mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-22 19:41:00 +00:00
086ffd7aff
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 other MRs) * Properties: - protocols selection and priority (NEW!) - location supports rtsp[ut]:// - port-start instead of port-range Co-Authored-by: Tim-Philipp Müller <tim@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1425> |
||
---|---|---|
.. | ||
src | ||
build.rs | ||
Cargo.toml | ||
LICENSE-MPL-2.0 | ||
README.md |
rtspsrc2
Rust rewrite of rtspsrc, with the purpose of fixing the fundamentally broken architecture of rtspsrc. There are some major problems with rtspsrc:
- Element states are linked to RTSP states, which causes unfixable glitching and issues, especially in shared RTSP media
- The command loop is fundamentally broken and buggy, which can cause RTSP
commands such as
SET_PARAMETER
andGET_PARAMETER
to be lost - The combination of the above two causes unfixable deadlocks when doing state changes due to external factors such as server state, or when seeking
- Parsing of untrusted RTSP messages from the network was done in C with the
GstRTSPMessage
API. - Parsing of untrusted SDP from the network was done in C with the
GstSDPMessage
API
Implemented features
- RTSP 1.0 support
- Lower transports: TCP, UDP, UDP-Multicast
- RTCP SR and RTCP RR
- RTCP-based A/V sync
- Lower transport selection and priority (NEW!)
- Also supports different lower transports for each SETUP
Missing features
Roughly in order of priority:
- Credentials support
- TLS/TCP support
- NAT hole punching
- Allocate a buffer pool for receiving + pushing UDP packets
- Allow ignoring specific streams (SDP medias)
- Currently all available source pads must be linked
- SRTP support
- HTTP tunnelling
- Proxy support
GET_PARAMETER
/SET_PARAMETER
- Make TCP connection optional when using UDP transport
- Or TCP reconnection if UDP has not timed out
- Parse SDP rtcp-fb attributes
- Parse SDP ssrc attributes
- Don't require Transport header in SETUP response, it is optional
- Clock sync support, such as RFC7273
- PAUSE support with VOD
- Seeking support with VOD
- ONVIF backchannel support
- ONVIF trick mode support
- RTSP 2 support (no servers exist at present)
Missing configuration properties
These are some misc rtspsrc props that haven't been implemented in rtspsrc2 yet:
- latency
- do-rtx
- do-rtcp
- iface
- user-agent
Maintenance and future cleanup
- Refactor SDP → Caps parsing into a module
- Test with market RTSP cameras
- Currently, only live555 and gst-rtsp-server have been tested
- Add tokio-console and tokio tracing support