4 releases
0.13.3 | Nov 2, 2024 |
---|---|
0.13.0 | Jul 16, 2024 |
0.12.4 | Apr 8, 2024 |
0.12.0 | Feb 8, 2024 |
#579 in Network programming
120KB
2.5K
SLoC
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
- 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 more SDP attributes
- extmap
- key-mgmt
- rid
- rtcp-fb
- source-filter
- ssrc
- 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
- Test with market RTSP cameras
- Currently, only live555 and gst-rtsp-server have been tested
- Add tokio-console and tokio tracing support
Dependencies
~19–30MB
~517K SLoC