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.

  • 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

  1. Schulzrinne, A. Rao, R. Lanphier

1998

2

RTSP v2.0 (Latest)

RFC 7826 Real-Time Streaming Protocol Version 2.0 (Obsoletes RFC 2326)

  1. Schulzrinne, A. Rao, R. Lanphier, M. Westerlund, M. Stiemerling

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