RTSP - Real-Time Streaming Protocol
What is RTSP?
RTSP, or Real-Time Streaming Protocol, is a network control protocol developed by the IETF (RFC 2326) for controlling streaming media servers. It is used to establish and control media sessions between endpoints allowing clients to play, pause, and stop media streams in real time.
Why RTSP is Useful?
Controls media playback (play, pause, seek, record) remotely.
Works with RTP to deliver real-time audio and video.
Supports both live and on-demand streaming.
Low latency – suitable for IP cameras and surveillance systems.
Session-based control – allows multiple streams to be managed independently.
How it works?
Client sends SETUP request – Establishes a session and transport method (usually RTP over UDP or TCP).
Client sends PLAY request – Starts media streaming from the server.
Media is streamed via RTP – RTSP controls the session, RTP carries the media.
Client can PAUSE or TEARDOWN – RTSP allows session control like pause, stop, or teardown.
RTCP provides feedback – RTCP monitors quality and synchronization.
Where is RTSP used?
IP cameras and CCTV systems – For real-time video surveillance.
Media servers – Like Wowza, Helix, and VLC for live/on-demand streaming.
Video conferencing systems – For session control and stream management.
Streaming apps and players – VLC, QuickTime, and others support RTSP streams.
Remote monitoring and broadcasting – For live events, classrooms, and security.
Which OSI Layer Does RTSP Belong To?
RTSP operates at the Application Layer (Layer 7) of the OSI model because:
It defines commands and responses for controlling streaming media sessions (play, pause, teardown), which are application-level functions.
It uses TCP (usually port 554) for connection and signaling but handles session management at a higher level.
Provides services directly to end-user applications and coordinates with lower-level protocols like RTP.
Has similarities with HTTP in structure and semantics, also an application-layer protocol.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
sno |
RTSP Version |
RFC / Standard |
Core / Contribution |
Year |
---|---|---|---|---|
1 |
RTSP v1.0 |
RFC 2326 Real-Time Streaming Protocol |
|
1998 |
2 |
RTSP v2.0 (Latest) |
RFC 7826 Real-Time Streaming Protocol Version 2.0 (Obsoletes RFC 2326) |
|
2016 |
Setup
Setup
Request Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
Request Packet |
Sent by the client to control media (e.g., PLAY, PAUSE) |
Variable |
Request Line |
Contains method (e.g., PLAY), URI, and RTSP version (e.g., PLAY rtsp://… RTSP/1.0) |
Variable |
|
CSeq |
Sequence number to match requests and responses |
Variable (e.g., CSeq: 1) |
|
Transport |
Specifies transport protocol and parameters (e.g., RTP/UDP, ports) |
Variable |
|
Session |
Identifies the session ID (after SETUP) |
Variable |
|
Range |
Specifies playback range (e.g., npt=0-) |
Variable |
|
User-Agent |
Identifies the client software |
Variable |
|
Other Headers |
May include Authorization, Accept, etc. |
Variable |
|
Blank Line |
Separates headers from body |
2 bytes (rn) |
|
Entity Body (Optional) |
May include SDP or other data |
Variable |
Response Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
Response Packet |
Sent by the server in reply to a request |
Variable |
Status Line |
Includes RTSP version, status code, and reason phrase (e.g., RTSP/1.0 200 OK) |
Variable |
|
CSeq |
Echoes the sequence number from the request |
Variable |
|
Session |
Echoes or assigns a session ID |
Variable |
|
Transport |
Confirms transport parameters |
Variable |
|
Date |
Server timestamp |
Variable |
|
Content-Length |
Length of the entity body (if present) |
Variable |
|
Content-Type |
Type of content in the body (e.g., application/sdp) |
Variable |
|
Entity Body (Optional) |
Contains SDP or other response data |
Variable |
Header Fields Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
3 |
Header Fields |
Contain metadata and control information |
Variable |
CSeq |
Sequence number to match request and response |
Variable (e.g., CSeq: 1) |
|
User-Agent |
Identifies the client software (e.g., VLC, FFmpeg) |
Variable |
|
Session |
Unique session ID assigned by the server |
Variable |
|
Transport |
Specifies transport protocol and parameters (e.g., RTP/UDP, ports) |
Variable |
|
Range |
Indicates playback range (e.g., npt=0-) |
Variable |
|
Accept |
Specifies acceptable content types (e.g., application/sdp) |
Variable |
|
Authorization |
Carries credentials for authentication |
Variable |
|
Content-Type |
Type of content in the entity body (e.g., application/sdp) |
Variable |
|
Content-Length |
Length of the entity body in bytes |
Variable |
|
Date |
Timestamp of the response |
Variable |
|
Cache-Control |
Caching directives (e.g., no-cache) |
Variable |
Entity Body Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
4 |
Entity Body (Optional) |
Carries additional data like SDP (Session Description Protocol) |
Variable |
v= (Version) |
SDP version (usually v=0) |
Few bytes |
|
o= (Origin) |
Session originator and session ID |
Variable |
|
s= (Session Name) |
Name of the session |
Variable |
|
t= (Timing) |
Start and stop times |
Variable |
|
m= (Media) |
Media type, port, and transport (e.g., m=video 5004 RTP/AVP 96) |
Variable |
|
a= (Attributes) |
Codec info, control URLs, etc. (e.g., a=rtpmap:96 H264/90000) |
Variable |
sno |
Use Case |
Description |
---|---|---|
1 |
IP Camera Streaming |
RTSP is widely used in CCTV and IP camera systems to stream live video feeds to monitoring software or NVRs. |
2 |
Media Server Control |
Used to control playback (play, pause, seek) of audio/video streams on media servers like Wowza, Helix, and VLC. |
3 |
Live Event Broadcasting |
Enables real-time control of live streams for concerts, sports, and news events. |
4 |
Video Surveillance Systems |
RTSP allows centralized control and access to multiple camera feeds in security systems. |
5 |
Remote Monitoring |
Used in smart home systems and industrial monitoring to stream live video/audio from remote locations. |
6 |
Streaming Applications |
Apps like VLC, QuickTime, and FFmpeg use RTSP to fetch and control media streams. |
7 |
Video Conferencing |
RTSP can be used to manage media sessions in conferencing systems, especially in hybrid setups. |
8 |
On-Demand Video Streaming |
Supports VOD services where users can control playback of stored media. |
9 |
Education and E-learning |
Used in virtual classrooms and lecture capture systems for live and recorded content delivery. |
10 |
Healthcare and Telemedicine |
Enables real-time video streaming for remote diagnostics and consultations. |
11 |
Digital Signage |
RTSP streams are used to deliver live content to public displays and kiosks. |
12 |
Military and Tactical Systems |
Used in secure, real-time video transmission for surveillance and mission control. |
13 |
Drone Video Feeds |
RTSP is used to stream live video from drones to ground control stations. |
14 |
Smart Transportation |
Used in traffic monitoring systems to stream live feeds from road cameras. |
15 |
Media Archiving |
RTSP streams can be recorded and archived for later playback or analysis. |
sno |
Feature |
Description |
---|---|---|
1 |
Session Control |
RTSP allows clients to control media sessions with commands like PLAY, PAUSE, TEARDOWN, and SETUP. |
2 |
Out-of-Band Transport |
RTSP controls the stream, while media is typically delivered via RTP, allowing separation of control and data. |
3 |
Bi-Directional Communication |
Uses TCP for reliable, two-way communication between client and server. |
4 |
Support for Live and On-Demand Streaming |
Can manage both real-time and pre-recorded media streams. |
5 |
Media Negotiation |
Supports negotiation of transport protocols (UDP, TCP, multicast) and media formats. |
6 |
Low Latency |
Enables near real-time control and playback, ideal for surveillance and live events. |
7 |
Multimedia Synchronization |
Works with RTP/RTCP to synchronize audio and video streams. |
8 |
Stateless or Stateful Operation |
Can maintain session state or operate statelessly depending on the use case. |
9 |
Support for SDP (Session Description Protocol) |
Uses SDP to describe media streams and capabilities. |
10 |
Scalability |
Suitable for one-to-one, one-to-many, or many-to-many streaming scenarios. |
11 |
Interoperability |
Widely supported by media servers, IP cameras, and streaming clients. |
12 |
Authentication and Access Control |
Supports basic and digest authentication for secure access. |
13 |
Pipelining Support (RTSP 2.0) |
Allows multiple requests to be sent without waiting for responses, improving efficiency. |
14 |
Persistent Connections |
Maintains a persistent TCP connection for session control. |
15 |
Extensibility |
Easily extended with new methods and headers for custom applications. |
Session Control - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Establish RTSP session |
Send SETUP request |
Session is created |
2 |
Play media stream |
Send PLAY request |
Media starts playing |
3 |
Pause media stream |
Send PAUSE request |
Media playback is paused |
4 |
Teardown session |
Send TEARDOWN request |
Session is terminated |
5 |
Resume playback |
Send PLAY after PAUSE |
Playback resumes |
6 |
Seek to specific time |
Send PLAY with Range header |
Playback starts from specified time |
7 |
Invalid session ID |
Use incorrect session ID |
Server returns error |
8 |
Session timeout |
Leave session idle |
Session is automatically closed |
9 |
Concurrent sessions |
Open multiple sessions |
All sessions operate independently |
10 |
Session ID reuse |
Reuse session ID after TEARDOWN |
Server rejects reused ID |
11 |
Session with authentication |
Send SETUP with credentials |
Session is established |
12 |
Session without authentication |
Send SETUP without credentials |
Server denies access |
13 |
Session with transport negotiation |
Negotiate transport in SETUP |
Transport is agreed upon |
14 |
Session with unsupported transport |
Request unsupported transport |
Server returns error |
15 |
Session with multicast |
Setup session for multicast |
Multicast stream is received |
16 |
Session with unicast |
Setup session for unicast |
Unicast stream is received |
17 |
Session with RTP over TCP |
Setup RTP over TCP |
Stream is received over TCP |
18 |
Session with RTP over UDP |
Setup RTP over UDP |
Stream is received over UDP |
19 |
Session with interleaved RTP |
Setup interleaved RTP |
RTP packets are received in RTSP channel |
20 |
Session with media control |
Use PLAY with scale parameter |
Playback speed is adjusted |
21 |
Session with media range |
Use PLAY with time range |
Partial media is played |
22 |
Session with invalid range |
Use PLAY with invalid range |
Server returns error |
23 |
Session with multiple media tracks |
Setup session with multiple tracks |
All tracks are streamed |
24 |
Session with unsupported media |
Request unsupported media |
Server returns error |
25 |
Session with SDP negotiation |
Use SDP in DESCRIBE |
Media parameters are negotiated |
26 |
Session with DESCRIBE failure |
Send DESCRIBE to invalid URI |
Server returns error |
27 |
Session with OPTIONS request |
Send OPTIONS to server |
Server returns supported methods |
28 |
Session with ANNOUNCE method |
Send ANNOUNCE to server |
Server updates media description |
29 |
Session with REDIRECT method |
Server sends REDIRECT |
Client switches to new URI |
30 |
Session with SET_PARAMETER |
Send SET_PARAMETER to server |
Parameters are updated |
31 |
Session with GET_PARAMETER |
Send GET_PARAMETER to server |
Parameters are retrieved |
32 |
Session with unsupported method |
Send unknown method |
Server returns 405 Method Not Allowed |
33 |
Session with malformed request |
Send malformed RTSP request |
Server returns 400 Bad Request |
34 |
Session with network failure |
Disconnect network mid-session |
Session is terminated |
35 |
Session with reconnect logic |
Reconnect after failure |
Session resumes or restarts |
36 |
Session with bandwidth limitation |
Simulate low bandwidth |
Stream adapts or buffers |
37 |
Session with jitter |
Introduce jitter in network |
Stream remains stable |
38 |
Session with packet loss |
Simulate packet loss |
Stream handles loss gracefully |
39 |
Session with encryption |
Use RTSP over TLS |
Session is secure |
40 |
Session with firewall traversal |
Setup session through firewall |
Stream is received |
41 |
Session with NAT traversal |
Setup session behind NAT |
Stream is received |
42 |
Session with proxy server |
Setup session via proxy |
Stream is received |
43 |
Session with mobile client |
Setup session from mobile |
Stream is received |
44 |
Session with desktop client |
Setup session from desktop |
Stream is received |
45 |
Session with browser client |
Setup session from browser |
Stream is received |
46 |
Session with media gateway |
Setup session through gateway |
Stream is received |
47 |
Session with media server restart |
Restart server mid-session |
Session is re-established |
48 |
Session with client restart |
Restart client mid-session |
Session resumes or reconnects |
49 |
Session with session persistence |
Maintain session across reconnects |
Session state is preserved |
50 |
Session with session logging |
Enable logging |
Session activity is recorded |
Out-of-Band Transport - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
OOB_Connect_Valid |
Establish OOB connection with valid parameters |
Connection established |
2 |
OOB_Connect_InvalidIP |
Attempt OOB connection with invalid IP |
Connection fails |
3 |
OOB_Connect_InvalidPort |
Attempt OOB connection with invalid port |
Connection fails |
4 |
OOB_Transport_TCP |
Use TCP for OOB transport |
Data transmitted successfully |
5 |
OOB_Transport_UDP |
Use UDP for OOB transport |
Data transmitted successfully |
6 |
OOB_Transport_RTP |
Use RTP over OOB |
RTP packets received correctly |
7 |
OOB_Transport_Secure |
Use TLS for OOB transport |
Secure connection established |
8 |
OOB_Timeout |
Simulate timeout during OOB setup |
Timeout error triggered |
9 |
OOB_Reconnect |
Reconnect after OOB disconnection |
Reconnection successful |
10 |
OOB_Data_Integrity |
Verify data integrity over OOB |
Data matches source |
11 |
OOB_LargePayload |
Send large payload over OOB |
Payload received intact |
12 |
OOB_SmallPayload |
Send small payload over OOB |
Payload received intact |
13 |
OOB_ConcurrentStreams |
Multiple OOB streams simultaneously |
All streams function correctly |
14 |
OOB_Interleaved |
Interleaved OOB and in-band data |
No data corruption |
15 |
OOB_Encryption |
Enable encryption on OOB |
Encrypted data transmitted |
16 |
OOB_Decryption |
Decrypt OOB data |
Data decrypted successfully |
17 |
OOB_Authentication |
Authenticate OOB session |
Authentication successful |
18 |
OOB_InvalidAuth |
Use invalid credentials |
Authentication fails |
19 |
OOB_Resilience |
Simulate packet loss |
Stream recovers gracefully |
20 |
OOB_Jitter |
Introduce jitter in OOB stream |
Stream remains stable |
21 |
OOB_Latency |
Measure latency in OOB transport |
Latency within acceptable range |
22 |
OOB_Bandwidth |
Measure bandwidth usage |
Bandwidth within limits |
23 |
OOB_KeepAlive |
Test keep-alive messages |
Connection remains active |
24 |
OOB_Disconnect |
Force disconnect OOB |
Connection terminates cleanly |
25 |
OOB_ReconnectDelay |
Delay before reconnecting |
Reconnects after delay |
26 |
OOB_ProtocolSwitch |
Switch protocol mid-session |
Switch handled gracefully |
27 |
OOB_UnsupportedProtocol |
Use unsupported protocol |
Error returned |
28 |
OOB_MalformedPacket |
Send malformed packet |
Packet rejected |
29 |
OOB_HeaderValidation |
Validate OOB headers |
Headers parsed correctly |
30 |
OOB_SequenceCheck |
Check packet sequence |
Sequence maintained |
31 |
OOB_TimestampCheck |
Validate timestamps |
Timestamps accurate |
32 |
OOB_ResourceRelease |
Release resources after disconnect |
No memory leaks |
33 |
OOB_StressTest |
High volume OOB traffic |
System remains stable |
34 |
OOB_Compatibility |
Test with legacy RTSP clients |
Backward compatibility maintained |
35 |
OOB_NetworkSwitch |
Switch network during session |
Session continues |
36 |
OOB_IPv6Support |
Use IPv6 for OOB |
Connection successful |
37 |
OOB_IPv4Fallback |
Fallback to IPv4 |
Fallback successful |
38 |
OOB_PortReuse |
Reuse OOB port |
No conflicts |
39 |
OOB_PortConflict |
Use already bound port |
Error returned |
40 |
OOB_Logging |
Enable OOB logging |
Logs generated correctly |
41 |
OOB_ErrorHandling |
Trigger OOB error |
Error handled gracefully |
42 |
OOB_Recovery |
Recover from OOB failure |
Recovery successful |
43 |
OOB_Throttling |
Throttle OOB traffic |
Traffic limited as expected |
44 |
OOB_Priority |
Prioritize OOB over in-band |
OOB gets higher priority |
45 |
OOB_MultiSession |
Multiple OOB sessions |
Sessions isolated |
46 |
OOB_SessionTeardown |
Teardown OOB session |
Resources cleaned up |
47 |
OOB_HeartbeatLoss |
Simulate heartbeat loss |
Session terminated |
48 |
OOB_ProxySupport |
Use OOB through proxy |
Proxy handles traffic |
49 |
OOB_FirewallTraversal |
Traverse firewall with OOB |
Connection successful |
50 |
OOB_NATTraversal |
NAT traversal for OOB |
Session established |
Bi-Directional Communication - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
BiDir_Connect_Valid |
Establish bi-directional RTSP session |
Session established |
2 |
BiDir_Connect_Invalid |
Attempt connection with invalid parameters |
Connection fails |
3 |
BiDir_TCP_Transport |
Use TCP for bi-directional communication |
Data flows both ways |
4 |
BiDir_UDP_Transport |
Use UDP for bi-directional communication |
Data flows both ways |
5 |
BiDir_RTP_Stream |
Stream RTP in both directions |
RTP packets exchanged |
6 |
BiDir_Control_Messages |
Exchange control messages |
Commands acknowledged |
7 |
BiDir_Data_Integrity |
Verify data integrity in both directions |
Data matches source |
8 |
BiDir_LargePayload |
Send large payloads both ways |
Payloads received intact |
9 |
BiDir_SmallPayload |
Send small payloads both ways |
Payloads received intact |
10 |
BiDir_ConcurrentSessions |
Multiple bi-directional sessions |
All sessions stable |
11 |
BiDir_Interleaved |
Interleave media and control messages |
No data loss |
12 |
BiDir_Encryption |
Enable encryption on both channels |
Encrypted data exchanged |
13 |
BiDir_Decryption |
Decrypt incoming data |
Data decrypted successfully |
14 |
BiDir_Authentication |
Authenticate both ends |
Authentication successful |
15 |
BiDir_InvalidAuth |
Use invalid credentials |
Authentication fails |
16 |
BiDir_Timeout |
Simulate timeout in one direction |
Timeout handled |
17 |
BiDir_Reconnect |
Reconnect after disconnection |
Session resumes |
18 |
BiDir_Heartbeat |
Exchange heartbeat messages |
Connection remains alive |
19 |
BiDir_Jitter |
Introduce jitter in both directions |
Stream remains stable |
20 |
BiDir_Latency |
Measure latency in both directions |
Within acceptable range |
21 |
BiDir_Bandwidth |
Measure bandwidth usage |
Within expected limits |
22 |
BiDir_KeepAlive |
Test keep-alive mechanism |
Session persists |
23 |
BiDir_Disconnect |
Disconnect one side |
Session terminates cleanly |
24 |
BiDir_Recovery |
Recover from failure |
Session restored |
25 |
BiDir_ProtocolSwitch |
Switch protocol mid-session |
Switch successful |
26 |
BiDir_UnsupportedProtocol |
Use unsupported protocol |
Error returned |
27 |
BiDir_MalformedPacket |
Send malformed packet |
Packet rejected |
28 |
BiDir_HeaderValidation |
Validate headers in both directions |
Headers parsed correctly |
29 |
BiDir_SequenceCheck |
Check packet sequence |
Sequence maintained |
30 |
BiDir_TimestampCheck |
Validate timestamps |
Timestamps accurate |
31 |
BiDir_ResourceRelease |
Release resources after disconnect |
No memory leaks |
32 |
BiDir_StressTest |
High volume traffic both ways |
System remains stable |
33 |
BiDir_Compatibility |
Test with legacy RTSP clients |
Compatibility maintained |
34 |
BiDir_NetworkSwitch |
Switch network during session |
Session continues |
35 |
BiDir_IPv6Support |
Use IPv6 for communication |
Connection successful |
36 |
BiDir_IPv4Fallback |
Fallback to IPv4 |
Fallback successful |
37 |
BiDir_PortReuse |
Reuse ports for both directions |
No conflicts |
38 |
BiDir_PortConflict |
Use already bound port |
Error returned |
39 |
BiDir_Logging |
Enable logging |
Logs generated correctly |
40 |
BiDir_ErrorHandling |
Trigger error in one direction |
Error handled gracefully |
41 |
BiDir_Throttling |
Throttle traffic in one direction |
Traffic limited |
42 |
BiDir_Priority |
Prioritize control over media |
Control messages prioritized |
43 |
BiDir_MultiSession |
Multiple bi-directional sessions |
Sessions isolated |
44 |
BiDir_SessionTeardown |
Teardown session |
Resources cleaned up |
45 |
BiDir_HeartbeatLoss |
Simulate heartbeat loss |
Session terminated |
46 |
BiDir_ProxySupport |
Use proxy for communication |
Proxy handles traffic |
47 |
BiDir_FirewallTraversal |
Traverse firewall |
Connection successful |
48 |
BiDir_NATTraversal |
NAT traversal |
Session established |
49 |
BiDir_ReverseStream |
Reverse stream direction |
Stream reversed successfully |
50 |
BiDir_SimultaneousControl |
Simultaneous control from both ends |
Commands handled correctly |
Support for Live and On-Demand Streaming - Testcases
S.No
Test Case
Description
Expected Result
1
Live_Connect_Valid
Connect to a live stream
Live stream starts
2
OnDemand_Connect_Valid
Connect to an on-demand stream
Playback starts
3
Live_InvalidURL
Use invalid URL for live stream
Error returned
4
OnDemand_InvalidURL
Use invalid URL for on-demand stream
Error returned
5
Live_Stream_Start
Start live stream from server
Stream begins
6
OnDemand_Stream_Start
Start on-demand stream
Playback begins
7
Live_Stream_Stop
Stop live stream
Stream ends
8
OnDemand_Stream_Stop
Stop on-demand stream
Playback stops
9
Live_Stream_Pause
Pause live stream
Pause not allowed or handled
10
OnDemand_Stream_Pause
Pause on-demand stream
Playback pauses
11
OnDemand_Stream_Resume
Resume paused on-demand stream
Playback resumes
12
OnDemand_Seek_Forward
Seek forward in on-demand stream
Playback jumps forward
13
OnDemand_Seek_Backward
Seek backward in on-demand stream
Playback jumps backward
14
Live_Seek
Attempt to seek in live stream
Seek not allowed or handled
15
Live_Latency_Check
Measure latency in live stream
Latency within limits
16
OnDemand_Buffering
Check buffering behavior
Smooth playback
17
Live_Buffering
Check buffering in live stream
Minimal buffering
18
Live_ConcurrentUsers
Multiple users access live stream
All users receive stream
19
OnDemand_ConcurrentUsers
Multiple users access on-demand stream
All users receive playback
20
Live_Stream_Quality
Check video quality in live stream
Quality meets expectations
21
OnDemand_Stream_Quality
Check video quality in on-demand
Quality meets expectations
22
Live_Resolution_Switch
Switch resolution during live stream
Switch successful
23
OnDemand_Resolution_Switch
Switch resolution during playback
Switch successful
24
Live_Audio_Sync
Check audio-video sync in live
Sync maintained
25
OnDemand_Audio_Sync
Check audio-video sync in on-demand
Sync maintained
26
Live_NetworkLoss
Simulate network loss in live
Stream recovers
27
OnDemand_NetworkLoss
Simulate network loss in on-demand
Playback resumes
28
Live_Authentication
Authenticate live stream access
Access granted
29
OnDemand_Authentication
Authenticate on-demand access
Access granted
30
Live_InvalidAuth
Use invalid credentials
Access denied
31
OnDemand_InvalidAuth
Use invalid credentials
Access denied
32
Live_Encryption
Enable encryption for live stream
Encrypted stream
33
OnDemand_Encryption
Enable encryption for on-demand
Encrypted playback
34
Live_ProtocolSwitch
Switch transport protocol
Switch successful
35
OnDemand_ProtocolSwitch
Switch transport protocol
Switch successful
36
Live_Logging
Enable logging for live stream
Logs generated
37
OnDemand_Logging
Enable logging for on-demand
Logs generated
38
Live_UnsupportedCodec
Use unsupported codec
Error returned
39
OnDemand_UnsupportedCodec
Use unsupported codec
Error returned
40
Live_MultiBitrate
Test adaptive bitrate streaming
Bitrate adjusts
41
OnDemand_MultiBitrate
Test adaptive bitrate playback
Bitrate adjusts
42
Live_Transcoding
Transcode live stream
Transcoded stream delivered
43
OnDemand_Transcoding
Transcode on-demand content
Transcoded playback
44
Live_Recording
Record live stream
Recording saved
45
OnDemand_Download
Download on-demand content
File downloaded
46
Live_RegionRestriction
Restrict live stream by region
Access blocked
47
OnDemand_RegionRestriction
Restrict on-demand by region
Access blocked
48
Live_Subtitles
Enable subtitles in live stream
Subtitles displayed
49
OnDemand_Subtitles
Enable subtitles in on-demand
Subtitles displayed
50
OnDemand_PlaybackSpeed
Change playback speed
Speed adjusted
Media Negotiation - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
MediaNeg_ValidRequest |
Send valid media negotiation request |
Server responds with supported formats |
2 |
MediaNeg_InvalidRequest |
Send malformed negotiation request |
Server returns error |
3 |
MediaNeg_SupportedCodec |
Request supported codec |
Codec accepted |
4 |
MediaNeg_UnsupportedCodec |
Request unsupported codec |
Server rejects codec |
5 |
MediaNeg_AudioOnly |
Negotiate audio-only stream |
Audio stream established |
6 |
MediaNeg_VideoOnly |
Negotiate video-only stream |
Video stream established |
7 |
MediaNeg_AudioVideo |
Negotiate both audio and video |
Both streams established |
8 |
MediaNeg_MultipleCodecs |
Request multiple codecs |
Best match selected |
9 |
MediaNeg_Resolution_720p |
Request 720p resolution |
Stream delivered in 720p |
10 |
MediaNeg_Resolution_1080p |
Request 1080p resolution |
Stream delivered in 1080p |
11 |
MediaNeg_Resolution_4K |
Request 4K resolution |
Stream delivered in 4K |
12 |
MediaNeg_Bitrate_Low |
Request low bitrate |
Stream delivered at low bitrate |
13 |
MediaNeg_Bitrate_High |
Request high bitrate |
Stream delivered at high bitrate |
14 |
MediaNeg_FrameRate_30fps |
Request 30fps |
Stream delivered at 30fps |
15 |
MediaNeg_FrameRate_60fps |
Request 60fps |
Stream delivered at 60fps |
16 |
MediaNeg_Language_English |
Request English audio |
English audio delivered |
17 |
MediaNeg_Language_Spanish |
Request Spanish audio |
Spanish audio delivered |
18 |
MediaNeg_Subtitles_On |
Request subtitles |
Subtitles included |
19 |
MediaNeg_Subtitles_Off |
Disable subtitles |
No subtitles delivered |
20 |
MediaNeg_Container_MP4 |
Request MP4 container |
MP4 stream delivered |
21 |
MediaNeg_Container_MKV |
Request MKV container |
MKV stream delivered |
22 |
MediaNeg_Transport_TCP |
Request TCP transport |
TCP used |
23 |
MediaNeg_Transport_UDP |
Request UDP transport |
UDP used |
24 |
MediaNeg_Transport_RTP |
Request RTP transport |
RTP used |
25 |
MediaNeg_Encryption_AES |
Request AES encryption |
Encrypted stream delivered |
26 |
MediaNeg_Encryption_None |
Request no encryption |
Unencrypted stream delivered |
27 |
MediaNeg_AdaptiveBitrate |
Request adaptive bitrate |
Bitrate adjusts dynamically |
28 |
MediaNeg_StaticBitrate |
Request static bitrate |
Fixed bitrate used |
29 |
MediaNeg_Transcoding_Enabled |
Request transcoding |
Transcoded stream delivered |
30 |
MediaNeg_Transcoding_Disabled |
Disable transcoding |
Original format delivered |
31 |
MediaNeg_ProtocolSwitch |
Switch protocol during negotiation |
Switch successful |
32 |
MediaNeg_Timeout |
Simulate timeout during negotiation |
Timeout error returned |
33 |
MediaNeg_ConcurrentRequests |
Send concurrent negotiation requests |
All handled correctly |
34 |
MediaNeg_ResourceRelease |
Release resources after negotiation |
No memory leaks |
35 |
MediaNeg_Logging |
Enable logging during negotiation |
Logs generated |
36 |
MediaNeg_UnsupportedResolution |
Request unsupported resolution |
Error returned |
37 |
MediaNeg_UnsupportedBitrate |
Request unsupported bitrate |
Error returned |
38 |
MediaNeg_UnsupportedLanguage |
Request unsupported language |
Error returned |
39 |
MediaNeg_UnsupportedContainer |
Request unsupported container |
Error returned |
40 |
MediaNeg_UnsupportedFrameRate |
Request unsupported frame rate |
Error returned |
41 |
MediaNeg_ProxySupport |
Negotiate media through proxy |
Proxy handles negotiation |
42 |
MediaNeg_FirewallTraversal |
Negotiate media across firewall |
Negotiation successful |
43 |
MediaNeg_NATTraversal |
Negotiate media across NAT |
Negotiation successful |
44 |
MediaNeg_IPv6Support |
Negotiate media over IPv6 |
Negotiation successful |
45 |
MediaNeg_IPv4Fallback |
Fallback to IPv4 |
Negotiation successful |
46 |
MediaNeg_StressTest |
High volume negotiation requests |
Server remains stable |
47 |
MediaNeg_SessionTeardown |
Teardown after negotiation |
Resources cleaned up |
48 |
MediaNeg_HeartbeatLoss |
Simulate heartbeat loss |
Negotiation session terminated |
49 |
MediaNeg_MultiSession |
Multiple negotiation sessions |
Sessions isolated |
50 |
MediaNeg_Compatibility |
Test with legacy RTSP client |
Negotiation successful |
Low Latency - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
LowLat_ValidSession |
Establish low-latency RTSP session |
Session starts with low latency |
2 |
LowLat_TCPTransport |
Use TCP for low-latency stream |
Acceptable latency maintained |
3 |
LowLat_UDPTransport |
Use UDP for low-latency stream |
Lower latency achieved |
4 |
LowLat_RTPOverUDP |
Use RTP over UDP |
Stream starts with minimal delay |
5 |
LowLat_RTPOverTCP |
Use RTP over TCP |
Stream starts with acceptable delay |
6 |
LowLat_InitialBuffering |
Measure initial buffering time |
Buffering time is minimal |
7 |
LowLat_LiveStream |
Stream live content |
Latency < 1 second |
8 |
LowLat_OnDemandStream |
Stream on-demand content |
Latency < 2 seconds |
9 |
LowLat_AdaptiveBitrate |
Enable adaptive bitrate |
Bitrate adjusts without delay |
10 |
LowLat_StaticBitrate |
Use fixed bitrate |
Stream remains stable |
11 |
LowLat_ResolutionSwitch |
Switch resolution mid-stream |
No noticeable delay |
12 |
LowLat_FrameRateSwitch |
Switch frame rate |
Stream continues smoothly |
13 |
LowLat_AudioSync |
Check audio-video sync |
Sync maintained |
14 |
LowLat_SeekForward |
Seek forward in stream |
Minimal delay in playback |
15 |
LowLat_SeekBackward |
Seek backward in stream |
Playback resumes quickly |
16 |
LowLat_PauseResume |
Pause and resume stream |
Resume is near-instant |
17 |
LowLat_ConcurrentUsers |
Multiple users stream simultaneously |
All experience low latency |
18 |
LowLat_Transcoding |
Enable server-side transcoding |
No added latency |
19 |
LowLat_Encryption |
Enable encryption |
Latency remains low |
20 |
LowLat_Decryption |
Decrypt stream |
No delay in playback |
21 |
LowLat_Authentication |
Authenticate user |
No delay in stream start |
22 |
LowLat_InvalidAuth |
Use invalid credentials |
Access denied immediately |
23 |
LowLat_BufferUnderrun |
Simulate buffer underrun |
Stream recovers quickly |
24 |
LowLat_Jitter |
Introduce jitter |
Stream remains stable |
25 |
LowLat_PacketLoss |
Simulate packet loss |
Stream recovers gracefully |
26 |
LowLat_NetworkSwitch |
Switch networks during stream |
No interruption |
27 |
LowLat_ProtocolSwitch |
Switch transport protocol |
Stream continues smoothly |
28 |
LowLat_UnsupportedCodec |
Use unsupported codec |
Error returned quickly |
29 |
LowLat_Logging |
Enable logging |
Logs show low latency metrics |
30 |
LowLat_ResourceRelease |
Release resources post-stream |
No memory leaks |
31 |
LowLat_StressTest |
High volume of low-latency sessions |
Server remains responsive |
32 |
LowLat_HeartbeatLoss |
Simulate heartbeat loss |
Session ends quickly |
33 |
LowLat_SessionTeardown |
Teardown session |
Resources released immediately |
34 |
LowLat_ProxySupport |
Use proxy in stream |
Latency remains low |
35 |
LowLat_FirewallTraversal |
Traverse firewall |
Stream starts without delay |
36 |
LowLat_NATTraversal |
NAT traversal |
Stream latency unaffected |
37 |
LowLat_IPv6Support |
Use IPv6 |
Stream latency remains low |
38 |
LowLat_IPv4Fallback |
Fallback to IPv4 |
Stream continues smoothly |
39 |
LowLat_Subtitles |
Enable subtitles |
No impact on latency |
40 |
LowLat_MultiTrack |
Switch audio tracks |
Switch is near-instant |
41 |
LowLat_ResolutionDrop |
Drop resolution due to bandwidth |
Stream continues without buffering |
42 |
LowLat_BitrateDrop |
Drop bitrate dynamically |
Playback remains smooth |
43 |
LowLat_ReverseStream |
Reverse stream direction |
Stream switches quickly |
44 |
LowLat_UnsupportedResolution |
Request unsupported resolution |
Error returned immediately |
45 |
LowLat_UnsupportedBitrate |
Request unsupported bitrate |
Error returned immediately |
46 |
LowLat_Compatibility |
Test with legacy client |
Stream starts with acceptable latency |
47 |
LowLat_KeepAlive |
Send keep-alive messages |
Session remains active |
48 |
LowLat_MultiSession |
Multiple sessions from same client |
All maintain low latency |
49 |
LowLat_TranscodeSwitch |
Switch transcoding profile |
Stream continues with minimal delay |
50 |
LowLat_RealTimeControl |
Send real-time control commands |
Commands executed instantly |
Multimedia Synchronization - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Sync_AudioVideo_Valid |
Play audio and video streams |
Streams are synchronized |
2 |
Sync_AudioVideo_Offset |
Introduce offset between streams |
Sync correction applied |
3 |
Sync_MultipleTracks |
Sync multiple audio tracks |
All tracks aligned |
4 |
Sync_Subtitles |
Sync subtitles with video |
Subtitles appear on time |
5 |
Sync_LiveStream |
Sync live audio and video |
Real-time sync maintained |
6 |
Sync_OnDemandStream |
Sync on-demand media |
Streams aligned |
7 |
Sync_SeekForward |
Seek forward in stream |
Sync maintained |
8 |
Sync_SeekBackward |
Seek backward in stream |
Sync maintained |
9 |
Sync_PauseResume |
Pause and resume stream |
Sync preserved |
10 |
Sync_FrameDrop |
Simulate video frame drop |
Audio remains in sync |
11 |
Sync_AudioDrop |
Simulate audio packet loss |
Video remains in sync |
12 |
Sync_Buffering |
Buffering during playback |
Sync restored after resume |
13 |
Sync_LowBandwidth |
Stream under low bandwidth |
Sync maintained |
14 |
Sync_HighLatency |
Introduce high latency |
Sync correction applied |
15 |
Sync_Jitter |
Introduce jitter in stream |
Sync remains stable |
16 |
Sync_PacketLoss |
Simulate packet loss |
Sync recovered |
17 |
Sync_Transcoding |
Transcode media on server |
Output remains synchronized |
18 |
Sync_AdaptiveBitrate |
Enable adaptive bitrate |
Sync maintained during switches |
19 |
Sync_StaticBitrate |
Use fixed bitrate |
Sync maintained |
20 |
Sync_ResolutionChange |
Change resolution mid-stream |
Sync not affected |
21 |
Sync_FrameRateChange |
Change frame rate |
Sync remains intact |
22 |
Sync_LanguageSwitch |
Switch audio language |
Sync maintained |
23 |
Sync_SubtitleLanguage |
Switch subtitle language |
Subtitles remain in sync |
24 |
Sync_Transport_TCP |
Use TCP transport |
Sync maintained |
25 |
Sync_Transport_UDP |
Use UDP transport |
Sync maintained |
26 |
Sync_Transport_RTP |
Use RTP transport |
Sync maintained |
27 |
Sync_Encryption |
Enable encryption |
Sync not affected |
28 |
Sync_Decryption |
Decrypt stream |
Sync preserved |
29 |
Sync_Authentication |
Authenticate session |
Sync starts correctly |
30 |
Sync_InvalidCodec |
Use unsupported codec |
Error returned |
31 |
Sync_UnsupportedFormat |
Use unsupported format |
Sync fails gracefully |
32 |
Sync_Logging |
Enable sync logging |
Logs show sync status |
33 |
Sync_ResourceRelease |
Release resources after stream |
No memory leaks |
34 |
Sync_StressTest |
High volume of sync sessions |
All sessions remain synced |
35 |
Sync_HeartbeatLoss |
Simulate heartbeat loss |
Sync session ends |
36 |
Sync_SessionTeardown |
Teardown session |
Sync session ends cleanly |
37 |
Sync_ProxySupport |
Use proxy in stream |
Sync maintained |
38 |
Sync_FirewallTraversal |
Traverse firewall |
Sync not affected |
39 |
Sync_NATTraversal |
NAT traversal |
Sync maintained |
40 |
Sync_IPv6Support |
Use IPv6 |
Sync maintained |
41 |
Sync_IPv4Fallback |
Fallback to IPv4 |
Sync maintained |
42 |
Sync_SubtitleDelay |
Introduce subtitle delay |
Delay corrected |
43 |
Sync_AudioDelay |
Introduce audio delay |
Delay corrected |
44 |
Sync_VideoDelay |
Introduce video delay |
Delay corrected |
45 |
Sync_RealTimeControl |
Send real-time control commands |
Sync not disrupted |
46 |
Sync_MultiSession |
Multiple sync sessions |
All sessions remain synced |
47 |
Sync_Compatibility |
Test with legacy client |
Sync maintained |
48 |
Sync_ReversePlayback |
Play stream in reverse |
Sync maintained |
49 |
Sync_PlaybackSpeedChange |
Change playback speed |
Sync adjusts accordingly |
50 |
Sync_ManualAdjustment |
Manually adjust sync offset |
Streams realign successfully |
Stateless or Stateful Operation - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Stateful_SessionInit |
Start a stateful RTSP session |
Session state maintained |
2 |
Stateless_Request |
Send stateless RTSP request |
Request processed independently |
3 |
Stateful_MultipleRequests |
Send multiple requests in session |
Server maintains context |
4 |
Stateless_MultipleRequests |
Send multiple stateless requests |
Each request handled independently |
5 |
Stateful_ResourceLock |
Lock resource in session |
Lock persists across requests |
6 |
Stateless_ResourceAccess |
Access resource statelessly |
No lock or session state |
7 |
Stateful_PauseResume |
Pause and resume stream |
Stream resumes from paused point |
8 |
Stateless_PauseResume |
Pause and resume without session |
Resume fails or restarts |
9 |
Stateful_Seek |
Seek within session |
Seek position maintained |
10 |
Stateless_Seek |
Seek without session |
Seek not possible or resets |
11 |
Stateful_Authentication |
Authenticate once per session |
Auth persists |
12 |
Stateless_Authentication |
Authenticate each request |
Auth required every time |
13 |
Stateful_Teardown |
Teardown session |
All session data cleared |
14 |
Stateless_Teardown |
Teardown stateless stream |
Only current stream ends |
15 |
Stateful_Timeout |
Session timeout after inactivity |
Session ends |
16 |
Stateless_NoTimeout |
No session timeout needed |
Requests always fresh |
17 |
Stateful_ConcurrentSessions |
Multiple stateful sessions |
Sessions isolated |
18 |
Stateless_ConcurrentRequests |
Multiple stateless requests |
All handled independently |
19 |
Stateful_ResourceRelease |
Release resources on session end |
Resources freed |
20 |
Stateless_ResourceReuse |
Reuse resource across requests |
No session dependency |
21 |
Stateful_Logging |
Log session activity |
Logs show session context |
22 |
Stateless_Logging |
Log individual requests |
Logs show isolated entries |
23 |
Stateful_ErrorRecovery |
Recover from error mid-session |
Session continues |
24 |
Stateless_ErrorRecovery |
Recover from stateless error |
New request needed |
25 |
Stateful_TransportSwitch |
Switch transport mid-session |
Session adapts |
26 |
Stateless_TransportSwitch |
Switch transport per request |
Each request independent |
27 |
Stateful_Encryption |
Enable encryption for session |
Encryption persists |
28 |
Stateless_Encryption |
Encrypt each request separately |
No persistent encryption |
29 |
Stateful_KeepAlive |
Use keep-alive messages |
Session remains active |
30 |
Stateless_NoKeepAlive |
No keep-alive needed |
Each request is fresh |
31 |
Stateful_ProxySupport |
Use proxy with session |
Proxy maintains session |
32 |
Stateless_ProxySupport |
Use proxy per request |
Proxy handles each request |
33 |
Stateful_NATTraversal |
Maintain NAT session |
NAT mapping persists |
34 |
Stateless_NATTraversal |
Stateless NAT traversal |
Mapping recreated each time |
35 |
Stateful_IPv6Support |
Stateful session over IPv6 |
Session maintained |
36 |
Stateless_IPv6Support |
Stateless requests over IPv6 |
Each request independent |
37 |
Stateful_SubtitleSync |
Sync subtitles in session |
Sync maintained |
38 |
Stateless_SubtitleSync |
Stateless subtitle request |
Sync may reset |
39 |
Stateful_MediaNegotiation |
Negotiate media once |
Settings persist |
40 |
Stateless_MediaNegotiation |
Negotiate media per request |
Settings re-negotiated |
41 |
Stateful_AdaptiveBitrate |
Adapt bitrate during session |
Smooth transitions |
42 |
Stateless_AdaptiveBitrate |
Stateless bitrate change |
May cause interruptions |
43 |
Stateful_MultiTrack |
Switch tracks mid-session |
Track switch seamless |
44 |
Stateless_MultiTrack |
Switch tracks per request |
May restart stream |
45 |
Stateful_SessionIDReuse |
Reuse session ID |
Session continues |
46 |
Stateless_NoSessionID |
No session ID used |
Each request new |
47 |
Stateful_Compatibility |
Test with stateful client |
Session works correctly |
48 |
Stateless_Compatibility |
Test with stateless client |
Requests handled correctly |
49 |
Stateful_SessionRecovery |
Recover session after disconnect |
Session resumes |
50 |
Stateless_SessionRecovery |
No session to recover |
New session starts |
Support for SDP - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
SDP_Parse_Valid |
Parse valid SDP description |
SDP parsed successfully |
2 |
SDP_Parse_Invalid |
Parse malformed SDP |
Error returned |
3 |
SDP_Media_Audio |
SDP includes audio media |
Audio stream initialized |
4 |
SDP_Media_Video |
SDP includes video media |
Video stream initialized |
5 |
SDP_Media_Multiple |
SDP includes multiple media types |
All streams initialized |
6 |
SDP_Attribute_rtpmap |
Parse rtpmap attribute |
Codec mapping applied |
7 |
SDP_Attribute_fmtp |
Parse fmtp attribute |
Format parameters applied |
8 |
SDP_Attribute_control |
Parse control attribute |
Control URL extracted |
9 |
SDP_Attribute_range |
Parse range attribute |
Playback range set |
10 |
SDP_Attribute_framerate |
Parse framerate attribute |
Frame rate applied |
11 |
SDP_Attribute_bitrate |
Parse bitrate attribute |
Bitrate applied |
12 |
SDP_Attribute_lang |
Parse language attribute |
Language preference applied |
13 |
SDP_Attribute_tool |
Parse tool attribute |
Tool info logged |
14 |
SDP_Attribute_type |
Parse type attribute |
Type recognized |
15 |
SDP_Attribute_source |
Parse source attribute |
Source IP applied |
16 |
SDP_Attribute_direction |
Parse sendrecv/sendonly/recvonly |
Direction applied |
17 |
SDP_Attribute_encrypt |
Parse encryption info |
Encryption enabled |
18 |
SDP_Attribute_keymgmt |
Parse key management info |
Keys applied |
19 |
SDP_Attribute_codec |
Parse codec info |
Codec selected |
20 |
SDP_Attribute_bandwidth |
Parse bandwidth info |
Bandwidth limits applied |
21 |
SDP_Attribute_timing |
Parse timing info |
Timing applied |
22 |
SDP_Attribute_repeat |
Parse repeat times |
Repeat schedule applied |
23 |
SDP_Attribute_timezone |
Parse timezone info |
Timezone adjusted |
24 |
SDP_Attribute_session_name |
Parse session name |
Name displayed |
25 |
SDP_Attribute_session_info |
Parse session info |
Info displayed |
26 |
SDP_Attribute_uri |
Parse URI |
URI validated |
27 |
SDP_Attribute_email |
Parse email contact |
Contact info logged |
28 |
SDP_Attribute_phone |
Parse phone contact |
Contact info logged |
29 |
SDP_Attribute_connection |
Parse connection info |
IP and port extracted |
30 |
SDP_Attribute_origin |
Parse origin field |
Session origin identified |
31 |
SDP_Attribute_version |
Parse version field |
Version validated |
32 |
SDP_Attribute_session_id |
Parse session ID |
Session identified |
33 |
SDP_Attribute_media_title |
Parse media title |
Title displayed |
34 |
SDP_Attribute_media_description |
Parse media description |
Description displayed |
35 |
SDP_Attribute_media_format |
Parse media format |
Format applied |
36 |
SDP_Attribute_transport |
Parse transport protocol |
Protocol selected |
37 |
SDP_Attribute_payload_type |
Parse payload type |
Payload matched |
38 |
SDP_Attribute_clockrate |
Parse clock rate |
Clock rate applied |
39 |
SDP_Attribute_channels |
Parse audio channels |
Channel count applied |
40 |
SDP_Attribute_ssrc |
Parse SSRC |
Stream identified |
41 |
SDP_Attribute_cname |
Parse CNAME |
CNAME applied |
42 |
SDP_Attribute_tool_version |
Parse tool version |
Version info logged |
43 |
SDP_Attribute_group |
Parse group attribute |
Grouping applied |
44 |
SDP_Attribute_mid |
Parse media ID |
Media ID matched |
45 |
SDP_Attribute_msid |
Parse media stream ID |
Stream ID applied |
46 |
SDP_Attribute_extmap |
Parse extension map |
Extensions applied |
47 |
SDP_Attribute_setup |
Parse setup attribute |
Setup mode applied |
48 |
SDP_Attribute_connection_mode |
Parse connection mode |
Mode applied |
49 |
SDP_Attribute_ice |
Parse ICE candidates |
ICE negotiation started |
50 |
SDP_Attribute_fingerprint |
Parse DTLS fingerprint |
Fingerprint validated |
Scalability - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Scalability_SingleClient |
Connect one client |
Stream starts successfully |
2 |
Scalability_TenClients |
Connect 10 clients simultaneously |
All clients stream successfully |
3 |
Scalability_HundredClients |
Connect 100 clients |
Server handles load |
4 |
Scalability_ThousandClients |
Connect 1000 clients |
Server remains stable |
5 |
Scalability_ConcurrentSessions |
Multiple sessions per client |
All sessions function correctly |
6 |
Scalability_StreamQuality |
Maintain stream quality under load |
Quality remains consistent |
7 |
Scalability_LowBandwidth |
Handle clients with low bandwidth |
Stream adapts |
8 |
Scalability_HighBandwidth |
Handle clients with high bandwidth |
Stream scales up |
9 |
Scalability_AdaptiveBitrate |
Enable adaptive bitrate |
Bitrate adjusts per client |
10 |
Scalability_StaticBitrate |
Use static bitrate |
Stream remains stable |
11 |
Scalability_ResolutionSwitch |
Clients switch resolution |
Server handles changes |
12 |
Scalability_FrameRateSwitch |
Clients switch frame rate |
No disruption |
13 |
Scalability_TranscodingLoad |
Transcode for multiple clients |
Server handles load |
14 |
Scalability_EncryptionLoad |
Encrypt streams for many clients |
No performance drop |
15 |
Scalability_AuthenticationLoad |
Authenticate multiple clients |
Auth handled efficiently |
16 |
Scalability_LoggingLoad |
Enable logging for all sessions |
Logs generated correctly |
17 |
Scalability_ResourceAllocation |
Allocate resources dynamically |
No resource exhaustion |
18 |
Scalability_CPUUsage |
Monitor CPU usage under load |
Within acceptable limits |
19 |
Scalability_MemoryUsage |
Monitor memory usage |
No leaks or spikes |
20 |
Scalability_NetworkUsage |
Monitor network usage |
Bandwidth managed |
21 |
Scalability_ProxySupport |
Use proxy for multiple clients |
Proxy handles traffic |
22 |
Scalability_FirewallTraversal |
Traverse firewall for many clients |
Connections successful |
23 |
Scalability_NATTraversal |
NAT traversal for many clients |
Sessions established |
24 |
Scalability_IPv6Support |
Use IPv6 for scalability |
Connections stable |
25 |
Scalability_IPv4Fallback |
Fallback to IPv4 |
No disruption |
26 |
Scalability_KeepAliveLoad |
Handle keep-alive for many sessions |
Sessions maintained |
27 |
Scalability_SessionTeardown |
Teardown multiple sessions |
Resources released |
28 |
Scalability_HeartbeatLoss |
Simulate heartbeat loss |
Sessions terminated gracefully |
29 |
Scalability_StressTest |
Extreme client load |
Server remains responsive |
30 |
Scalability_Recovery |
Recover from overload |
Server resumes normal operation |
31 |
Scalability_ConcurrentStreams |
Multiple streams per client |
All streams play correctly |
32 |
Scalability_MediaNegotiation |
Negotiate media for many clients |
All negotiations succeed |
33 |
Scalability_SubtitleSupport |
Enable subtitles for many clients |
Subtitles delivered |
34 |
Scalability_MultiLanguage |
Stream in multiple languages |
All clients receive correct stream |
35 |
Scalability_AudioTrackSwitch |
Switch audio tracks under load |
Switch successful |
36 |
Scalability_VideoTrackSwitch |
Switch video tracks under load |
Switch successful |
37 |
Scalability_RealTimeControl |
Send control commands under load |
Commands executed |
38 |
Scalability_ReversePlayback |
Reverse playback for many clients |
Playback reversed |
39 |
Scalability_PlaybackSpeedChange |
Change playback speed |
Speed adjusted correctly |
40 |
Scalability_LiveStreamLoad |
Live stream to many clients |
Stream remains real-time |
41 |
Scalability_OnDemandLoad |
On-demand stream to many clients |
Playback remains smooth |
42 |
Scalability_BufferingBehavior |
Monitor buffering under load |
Minimal buffering |
43 |
Scalability_JitterHandling |
Handle jitter for many clients |
Streams remain stable |
44 |
Scalability_PacketLossRecovery |
Recover from packet loss |
Streams resume |
45 |
Scalability_ResolutionDrop |
Drop resolution dynamically |
Stream continues |
46 |
Scalability_BitrateDrop |
Drop bitrate dynamically |
Stream adapts |
47 |
Scalability_Compatibility |
Test with legacy clients |
All clients supported |
48 |
Scalability_MultiServer |
Distribute load across servers |
Load balanced |
49 |
Scalability_LoadBalancing |
Use load balancer |
Traffic distributed evenly |
50 |
Scalability_AutoScaling |
Auto-scale server resources |
New instances created as needed |
Interoperability - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
RTSP Version Compatibility |
Test RTSP 1.0 client with RTSP 2.0 server |
Client should receive a version mismatch error or fallback |
2 |
Basic OPTIONS Request |
Send OPTIONS request from client to server |
Server responds with supported methods |
3 |
DESCRIBE Request |
Client sends DESCRIBE to get media description |
Server returns SDP (Session Description Protocol) |
4 |
SETUP Request |
Client sends SETUP for a media stream |
Server responds with transport parameters |
5 |
PLAY Request |
Client sends PLAY after SETUP |
Server starts streaming media |
6 |
PAUSE Request |
Client sends PAUSE during streaming |
Server pauses the stream |
7 |
TEARDOWN Request |
Client sends TEARDOWN |
Server stops streaming and releases resources |
8 |
Unsupported Method |
Client sends an unsupported method |
Server returns 405 Method Not Allowed |
9 |
Interleaved RTP over TCP |
Test RTP over RTSP (interleaved) |
Media is streamed over TCP |
10 |
RTP over UDP |
Test RTP over UDP transport |
Media is streamed over UDP |
11 |
RTSP over HTTP |
Test tunneling RTSP over HTTP |
Server accepts and processes tunneled RTSP |
12 |
Authentication Required |
Server requires authentication |
Client receives 401 Unauthorized |
13 |
Basic Authentication |
Client sends valid credentials |
Server grants access |
14 |
Digest Authentication |
Client uses digest auth |
Server grants access |
15 |
Invalid Credentials |
Client sends wrong credentials |
Server denies access |
16 |
Session Timeout |
Client idle beyond timeout |
Server terminates session |
17 |
Session Keep-Alive |
Client sends keep-alive |
Server maintains session |
18 |
Multiple Media Streams |
Client requests multiple streams |
Server handles all streams correctly |
19 |
Multicast Streaming |
Server streams via multicast |
Client receives multicast packets |
20 |
Unicast Streaming |
Server streams via unicast |
Client receives unicast packets |
21 |
NAT Traversal |
Client behind NAT |
Streaming works via NAT |
22 |
Firewall Traversal |
Client behind firewall |
Streaming works or fails gracefully |
23 |
IPv6 Support |
Use IPv6 addresses |
RTSP session works over IPv6 |
24 |
IPv4 Support |
Use IPv4 addresses |
RTSP session works over IPv4 |
25 |
Media Seek |
Client sends PLAY with Range header |
Server seeks to specified time |
26 |
Invalid Range Header |
Client sends invalid range |
Server returns error |
27 |
SDP Parsing |
Client parses SDP correctly |
Media parameters extracted |
28 |
SDP with Multiple Tracks |
SDP contains multiple tracks |
Client handles all tracks |
29 |
Transport Header Variants |
Test different transport headers |
Server handles all variants |
30 |
Interoperability with VLC |
Use VLC as client |
Streaming works |
31 |
Interoperability with FFmpeg |
Use FFmpeg as client |
Streaming works |
32 |
Interoperability with GStreamer |
Use GStreamer as client |
Streaming works |
33 |
Interoperability with Live555 |
Use Live555 as server |
Client connects and streams |
34 |
RTSP URL Parsing |
Client parses RTSP URL |
Correct host, port, path extracted |
35 |
Invalid RTSP URL |
Client sends malformed URL |
Server returns error |
36 |
Concurrent Clients |
Multiple clients connect |
Server handles all sessions |
37 |
Bandwidth Limitation |
Server limits bandwidth |
Client adapts or receives error |
38 |
Packet Loss Handling |
Simulate packet loss |
Client handles gracefully |
39 |
Jitter Handling |
Simulate jitter |
Client buffers and plays smoothly |
40 |
Clock Synchronization |
Test RTP timestamps |
Client syncs playback |
41 |
RTCP Support |
Server sends RTCP packets |
Client receives and processes |
42 |
RTSP Redirection |
Server redirects client |
Client follows redirect |
43 |
Server Crash Recovery |
Server restarts mid-session |
Client reconnects |
44 |
Client Crash Recovery |
Client restarts mid-session |
Session resumes or restarts |
45 |
Invalid SDP |
Server sends malformed SDP |
Client returns error |
46 |
Unsupported Codec |
Server uses unknown codec |
Client returns error |
47 |
Codec Negotiation |
Client requests specific codec |
Server honors or rejects |
48 |
Language Localization |
RTSP messages in different languages |
Client handles or ignores |
49 |
Logging and Debugging |
Enable RTSP logs |
Logs show correct sequence |
50 |
End-to-End Encryption |
Use RTSP over TLS |
Secure session established |
Authentication and Access Control - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Auth_ValidCredentials |
Connect with valid username/password |
Access granted |
2 |
Auth_InvalidCredentials |
Connect with wrong credentials |
Access denied |
3 |
Auth_NoCredentials |
Connect without credentials |
Access denied |
4 |
Auth_BasicScheme |
Use Basic Authentication |
Auth successful |
5 |
Auth_DigestScheme |
Use Digest Authentication |
Auth successful |
6 |
Auth_UnsupportedScheme |
Use unsupported auth scheme |
Error returned |
7 |
Auth_TokenBased |
Use token-based authentication |
Access granted |
8 |
Auth_ExpiredToken |
Use expired token |
Access denied |
9 |
Auth_MissingToken |
Omit token in request |
Access denied |
10 |
Auth_HeaderTampering |
Modify auth header |
Access denied |
11 |
Auth_EncryptedPassword |
Use encrypted password |
Auth successful |
12 |
Auth_PlaintextPassword |
Use plaintext password |
Auth successful (if allowed) |
13 |
Auth_EmptyUsername |
Use empty username |
Access denied |
14 |
Auth_EmptyPassword |
Use empty password |
Access denied |
15 |
Auth_SQLInjection |
Attempt SQL injection in credentials |
Access denied |
16 |
Auth_XSSInjection |
Attempt XSS in credentials |
Access denied |
17 |
Auth_ConcurrentSessions |
Multiple sessions with same user |
All sessions authenticated |
18 |
Auth_SessionTimeout |
Session expires after timeout |
Re-authentication required |
19 |
Auth_KeepAlive |
Keep session alive with keep-alive |
Session remains active |
20 |
Auth_Logout |
Explicit logout request |
Session terminated |
21 |
Auth_Logging |
Log authentication attempts |
Logs generated |
22 |
Auth_FailedAttemptsLimit |
Limit failed login attempts |
Account locked or blocked |
23 |
Auth_IPRestriction |
Restrict access by IP |
Access allowed/denied based on IP |
24 |
Auth_RoleBasedAccess |
Access based on user role |
Permissions enforced |
25 |
Auth_AdminAccess |
Admin user access |
Full access granted |
26 |
Auth_ViewerAccess |
Viewer user access |
Limited access granted |
27 |
Auth_AnonymousAccess |
Allow anonymous access |
Access granted with restrictions |
28 |
Auth_RestrictedResource |
Access restricted stream |
Access denied |
29 |
Auth_PublicResource |
Access public stream |
Access granted |
30 |
Auth_ResourceOwnership |
Access user-owned resource |
Access granted |
31 |
Auth_ResourceIsolation |
Prevent access to others’ streams |
Access denied |
32 |
Auth_TransportSecurity |
Use secure transport (TLS) |
Credentials protected |
33 |
Auth_TransportInsecure |
Use insecure transport (HTTP) |
Warning or denial |
34 |
Auth_ProxySupport |
Authenticate through proxy |
Auth successful |
35 |
Auth_FirewallTraversal |
Authenticate across firewall |
Auth successful |
36 |
Auth_NATTraversal |
Authenticate behind NAT |
Auth successful |
37 |
Auth_IPv6Support |
Authenticate over IPv6 |
Auth successful |
38 |
Auth_IPv4Fallback |
Fallback to IPv4 |
Auth successful |
39 |
Auth_MultiFactor |
Use multi-factor authentication |
Access granted |
40 |
Auth_AuthHeaderMissing |
Omit Authorization header |
Access denied |
41 |
Auth_AuthHeaderMalformed |
Send malformed Authorization header |
Access denied |
42 |
Auth_AuthHeaderReplay |
Replay old auth header |
Access denied |
43 |
Auth_AuthHeaderExpired |
Use expired auth header |
Access denied |
44 |
Auth_AuthHeaderValid |
Use valid auth header |
Access granted |
45 |
Auth_ConcurrentLoginLimit |
Limit concurrent logins per user |
Excess sessions denied |
46 |
Auth_AccountLockout |
Lock account after repeated failures |
Access blocked |
47 |
Auth_AccountUnlock |
Unlock account after timeout/admin |
Access restored |
48 |
Auth_AuditTrail |
Maintain audit trail of access |
Logs available |
49 |
Auth_Compatibility |
Test with various RTSP clients |
Auth works across clients |
50 |
Auth_StressTest |
High volume of auth requests |
Server handles load gracefully |
Pipelining Support - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Pipeline_SingleRequest |
Send a single RTSP request |
Response received correctly |
2 |
Pipeline_MultipleRequests |
Send multiple requests without waiting |
Responses received in order |
3 |
Pipeline_InterleavedRequests |
Interleave SETUP and PLAY |
Responses match request order |
4 |
Pipeline_ConcurrentSessions |
Pipeline requests in multiple sessions |
Sessions handled independently |
5 |
Pipeline_WithoutSessionID |
Send pipelined requests without session ID |
Server handles or rejects appropriately |
6 |
Pipeline_WithSessionID |
Send pipelined requests with session ID |
Server maintains session context |
7 |
Pipeline_InvalidRequestInBatch |
Include invalid request in pipeline |
Only invalid request fails |
8 |
Pipeline_ValidAndInvalidMix |
Mix valid and invalid requests |
Valid requests succeed, invalid fails |
9 |
Pipeline_AuthenticationRequired |
Pipeline requests needing auth |
Auth challenge returned |
10 |
Pipeline_AfterAuth |
Pipeline after successful auth |
All requests processed |
11 |
Pipeline_TransportSwitch |
Switch transport in pipelined SETUP |
Server handles switch |
12 |
Pipeline_SeekAndPlay |
Pipeline SEEK and PLAY |
Playback resumes from seek point |
13 |
Pipeline_PauseAndTeardown |
Pipeline PAUSE and TEARDOWN |
Stream pauses then ends |
14 |
Pipeline_UnsupportedMethod |
Include unsupported method |
Error returned for that request |
15 |
Pipeline_EmptyRequest |
Include empty request |
Server ignores or errors |
16 |
Pipeline_HeaderMismatch |
Mismatched headers in pipeline |
Server handles gracefully |
17 |
Pipeline_Timeout |
Delay between pipelined requests |
Server handles timeout correctly |
18 |
Pipeline_KeepAlive |
Include OPTIONS in pipeline |
Session kept alive |
19 |
Pipeline_ResourceLock |
Lock resource in one request |
Lock respected in others |
20 |
Pipeline_ResourceConflict |
Conflicting requests in pipeline |
Conflict handled |
21 |
Pipeline_Logging |
Enable logging for pipelined session |
Logs show correct sequence |
22 |
Pipeline_StressTest |
Send large number of pipelined requests |
Server remains stable |
23 |
Pipeline_InterleavedMedia |
Media interleaved with pipelined control |
No data loss |
24 |
Pipeline_EncryptedSession |
Use TLS with pipelining |
Secure and ordered responses |
25 |
Pipeline_ProxySupport |
Send pipelined requests via proxy |
Proxy forwards correctly |
26 |
Pipeline_FirewallTraversal |
Pipeline through firewall |
Requests not blocked |
27 |
Pipeline_NATTraversal |
Pipeline behind NAT |
Session maintained |
28 |
Pipeline_IPv6Support |
Use IPv6 with pipelining |
Requests succeed |
29 |
Pipeline_IPv4Fallback |
Fallback to IPv4 |
Requests succeed |
30 |
Pipeline_UnsupportedVersion |
Use RTSP 1.0 with pipelining |
Server rejects or ignores |
31 |
Pipeline_ValidVersion |
Use RTSP 2.0 |
Pipelining supported |
32 |
Pipeline_SequenceMismatch |
Out-of-order CSeq headers |
Server reorders or errors |
33 |
Pipeline_CSeqGap |
Gaps in CSeq numbers |
Server handles correctly |
34 |
Pipeline_CSeqDuplicate |
Duplicate CSeq in pipeline |
Server returns error |
35 |
Pipeline_SessionTeardown |
Teardown session mid-pipeline |
Later requests fail |
36 |
Pipeline_MediaNegotiation |
Pipeline DESCRIBE and SETUP |
Media negotiated correctly |
37 |
Pipeline_RealTimeControl |
Real-time control via pipelining |
Commands executed in order |
38 |
Pipeline_UnsupportedTransport |
Use unsupported transport |
Error returned |
39 |
Pipeline_ResourceRelease |
Release resources after pipeline |
No memory leaks |
40 |
Pipeline_Compatibility |
Test with compliant clients |
All requests succeed |
41 |
Pipeline_Interoperability |
Test with various servers |
Responses consistent |
42 |
Pipeline_HeartbeatLoss |
Simulate heartbeat loss |
Session ends |
43 |
Pipeline_Recovery |
Recover from failed pipeline |
New requests succeed |
44 |
Pipeline_StatelessClient |
Stateless client pipelining |
Server handles correctly |
45 |
Pipeline_StatefulClient |
Stateful client pipelining |
Session maintained |
46 |
Pipeline_MediaSync |
Sync media after pipelined PLAY |
Audio/video in sync |
47 |
Pipeline_SubtitleSupport |
Include subtitle control |
Subtitles rendered correctly |
48 |
Pipeline_MultiTrack |
Switch tracks in pipeline |
Track switch successful |
49 |
Pipeline_ReversePlayback |
Request reverse playback |
Server handles or rejects |
50 |
Pipeline_PlaybackSpeed |
Change speed in pipeline |
Playback adjusts accordingly |
Persistent Connections - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Persistent_Connection_Establish |
Establish persistent RTSP connection |
Connection remains open |
2 |
Persistent_Connection_Close |
Close persistent connection |
Connection terminates cleanly |
3 |
Persistent_Connection_Timeout |
Simulate idle timeout |
Connection closes after timeout |
4 |
Persistent_Connection_KeepAlive |
Send keep-alive messages |
Connection stays alive |
5 |
Persistent_Connection_Reuse |
Reuse connection for multiple requests |
Requests succeed without reconnecting |
6 |
Persistent_Connection_Auth |
Authenticate over persistent connection |
Auth persists across requests |
7 |
Persistent_Connection_NoAuth |
No auth on persistent connection |
Access denied |
8 |
Persistent_Connection_TransportSwitch |
Switch transport mid-connection |
Connection adapts |
9 |
Persistent_Connection_TCP |
Use TCP for persistent connection |
Connection remains stable |
10 |
Persistent_Connection_UDP |
Use UDP for persistent connection |
Connection maintained |
11 |
Persistent_Connection_TLS |
Use TLS for persistent connection |
Secure connection maintained |
12 |
Persistent_Connection_Proxy |
Use proxy with persistent connection |
Proxy handles connection |
13 |
Persistent_Connection_NAT |
Persistent connection behind NAT |
Connection remains active |
14 |
Persistent_Connection_IPv6 |
Use IPv6 for persistent connection |
Connection successful |
15 |
Persistent_Connection_IPv4Fallback |
Fallback to IPv4 |
Connection successful |
16 |
Persistent_Connection_ConcurrentSessions |
Multiple sessions on one connection |
Sessions isolated |
17 |
Persistent_Connection_InterleavedMedia |
Interleave media and control |
No data loss |
18 |
Persistent_Connection_Logging |
Enable logging |
Logs show continuous connection |
19 |
Persistent_Connection_ErrorRecovery |
Recover from mid-session error |
Connection remains open |
20 |
Persistent_Connection_ResourceRelease |
Release resources after close |
No memory leaks |
21 |
Persistent_Connection_StressTest |
High volume of requests |
Connection remains stable |
22 |
Persistent_Connection_HeartbeatLoss |
Simulate heartbeat loss |
Connection closes |
23 |
Persistent_Connection_RealTimeControl |
Send real-time commands |
Commands executed instantly |
24 |
Persistent_Connection_Seek |
Seek during persistent session |
Playback resumes correctly |
25 |
Persistent_Connection_PauseResume |
Pause and resume stream |
Stream resumes without reconnect |
26 |
Persistent_Connection_Teardown |
Teardown session |
Connection optionally remains |
27 |
Persistent_Connection_MediaSwitch |
Switch media tracks |
Connection persists |
28 |
Persistent_Connection_BitrateChange |
Change bitrate mid-session |
Stream continues |
29 |
Persistent_Connection_ResolutionChange |
Change resolution |
No reconnection needed |
30 |
Persistent_Connection_FrameRateChange |
Change frame rate |
Stream continues |
31 |
Persistent_Connection_Subtitles |
Enable/disable subtitles |
Connection unaffected |
32 |
Persistent_Connection_LanguageSwitch |
Switch audio language |
Connection persists |
33 |
Persistent_Connection_UnsupportedCommand |
Send unsupported command |
Error returned, connection stays |
34 |
Persistent_Connection_InvalidRequest |
Send invalid request |
Connection remains open |
35 |
Persistent_Connection_StatelessClient |
Stateless client on persistent connection |
Requests handled correctly |
36 |
Persistent_Connection_StatefulClient |
Stateful client on persistent connection |
Session maintained |
37 |
Persistent_Connection_Compatibility |
Test with various clients |
Connection supported |
38 |
Persistent_Connection_Interoperability |
Test with various servers |
Connection supported |
39 |
Persistent_Connection_ResourceLock |
Lock resource in session |
Lock persists |
40 |
Persistent_Connection_ResourceConflict |
Conflict on shared resource |
Conflict handled |
41 |
Persistent_Connection_EncryptionSwitch |
Switch encryption mid-session |
Connection adapts |
42 |
Persistent_Connection_AuthHeaderReuse |
Reuse auth header |
Auth persists |
43 |
Persistent_Connection_MalformedHeader |
Send malformed header |
Error returned, connection stays |
44 |
Persistent_Connection_ConcurrentRequests |
Send concurrent requests |
All handled correctly |
45 |
Persistent_Connection_Pipelining |
Use pipelining over persistent connection |
Responses returned in order |
46 |
Persistent_Connection_ReversePlayback |
Request reverse playback |
Connection persists |
47 |
Persistent_Connection_PlaybackSpeed |
Change playback speed |
Stream continues |
48 |
Persistent_Connection_MultiTrack |
Switch between tracks |
No reconnection |
49 |
Persistent_Connection_AccessControl |
Enforce access control |
Permissions respected |
50 |
Persistent_Connection_AuditTrail |
Maintain audit trail |
Logs show full session activity |
Extensibility - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Add Custom Header |
Add a custom RTSP header |
Server accepts and processes header |
2 |
Ignore Unknown Header |
Send unknown header |
Server ignores without error |
3 |
Extend OPTIONS Method |
Add new method to OPTIONS |
Server lists new method |
4 |
Extend DESCRIBE Method |
Add custom parameters |
Server returns extended SDP |
5 |
Extend SETUP Method |
Add transport extensions |
Server accepts new transport |
6 |
Extend PLAY Method |
Add playback modifiers |
Server modifies playback accordingly |
7 |
Extend PAUSE Method |
Add pause reason |
Server logs reason |
8 |
Extend TEARDOWN Method |
Add session cleanup flag |
Server performs cleanup |
9 |
Add New RTSP Method |
Define new method X-METHOD |
Server recognizes and responds |
10 |
Custom SDP Attributes |
Add new SDP attributes |
Server parses and includes them |
11 |
Handle Extended SDP |
Send extended SDP |
Client parses correctly |
12 |
Custom Transport Protocol |
Use non-standard transport |
Server negotiates successfully |
13 |
Extended Authentication |
Add custom auth scheme |
Server authenticates correctly |
14 |
Custom Session ID Format |
Use extended session ID |
Server accepts and tracks session |
15 |
Extended Range Header |
Add new range format |
Server interprets correctly |
16 |
Extended Scale Header |
Add new scale values |
Server adjusts playback speed |
17 |
Extended RTP Info |
Add new RTP fields |
Server includes in response |
18 |
Extended RTSP URL |
Use extended URL format |
Server resolves correctly |
19 |
Custom Media Type |
Add new media type |
Server streams correctly |
20 |
Extended Error Codes |
Use custom error codes |
Client interprets correctly |
21 |
Extended Status Line |
Add new status info |
Client parses correctly |
22 |
Custom RTSP Version |
Use RTSP/2.0 or higher |
Server negotiates version |
23 |
Extended Transport Header |
Add new transport options |
Server handles correctly |
24 |
Extended CSeq Format |
Use non-numeric CSeq |
Server accepts and responds |
25 |
Extended Date Header |
Add timezone info |
Server parses correctly |
26 |
Extended Require Header |
Add new feature tags |
Server checks support |
27 |
Extended Proxy Support |
Add proxy-specific headers |
Proxy handles correctly |
28 |
Extended Bandwidth Header |
Add bandwidth modifiers |
Server adjusts stream |
29 |
Extended Session Timeout |
Add custom timeout values |
Server honors timeout |
30 |
Extended Retry Logic |
Add retry-after header |
Client retries correctly |
31 |
Extended Interleaved Channels |
Use custom channel mapping |
Server maps correctly |
32 |
Extended RTSP over HTTP |
Use RTSP tunneled over HTTP |
Server handles correctly |
33 |
Extended RTSP over TLS |
Use secure RTSP |
Server negotiates TLS |
34 |
Extended RTSP over QUIC |
Use RTSP over QUIC |
Server streams successfully |
35 |
Extended RTSP Logging |
Add custom log headers |
Server logs correctly |
36 |
Extended RTSP Metrics |
Add performance metrics |
Server reports metrics |
37 |
Extended RTSP Debugging |
Add debug flags |
Server provides debug info |
38 |
Extended RTSP Tracing |
Add trace headers |
Server traces session |
39 |
Extended RTSP Caching |
Add cache-control headers |
Server caches accordingly |
40 |
Extended RTSP Redirection |
Add redirect headers |
Client follows redirect |
41 |
Extended RTSP Multicast |
Add multicast extensions |
Server streams via multicast |
42 |
Extended RTSP NAT Traversal |
Add NAT headers |
Server handles NAT correctly |
43 |
Extended RTSP QoS |
Add QoS parameters |
Server adjusts stream quality |
44 |
Extended RTSP Priority |
Add priority headers |
Server prioritizes stream |
45 |
Extended RTSP Synchronization |
Add sync headers |
Server syncs streams |
46 |
Extended RTSP Clock Drift |
Add drift correction |
Server adjusts timing |
47 |
Extended RTSP Buffering |
Add buffer control headers |
Server manages buffering |
48 |
Extended RTSP Keep-Alive |
Add keep-alive headers |
Server maintains session |
49 |
Extended RTSP Session Migration |
Add migration headers |
Server migrates session |
50 |
Extended RTSP Analytics |
Add analytics headers |
Server collects and reports data |
Reference links