RTMP - Real-Time Messaging Protocol

container:

container pb-4

column:

col-lg-12 p-2

card:

shadow

What is RTMP?

RTMP, or Real-Time Messaging Protocol, is a streaming protocol originally developed by Macromedia (now Adobe) for high-performance transmission of audio, video, and data between a server and a Flash player. It is widely used for live streaming and low-latency communication.

Why RTMP is Useful?

  • Low latency – Ideal for real-time applications like live broadcasts and video conferencing.

  • Persistent connection – Maintains a constant TCP connection for smooth streaming.

  • Supports live and on-demand streaming.

  • Widely supported by streaming software (e.g., OBS, vMix).

  • Can be used as an ingest protocol for re-streaming via HLS or DASH.

How it works?

  • Client connects to RTMP server – A persistent TCP connection is established.

  • Stream is published – The broadcaster sends audio/video data to the server.

  • Server distributes stream – The server relays the stream to connected viewers.

  • Playback – Viewers receive the stream with minimal delay.

Where is RTMP used?

  • Live streaming platforms – Twitch, Facebook Live (as ingest protocol).

  • Broadcast software – OBS Studio, Wirecast, XSplit.

  • Video conferencing – Low-latency internal communication tools.

  • Media servers – Wowza, Red5, Adobe Media Server.

Which OSI layer does this protocol belong to?

  • RTMP operates over TCP, using port 1935 by default.

  • It defines its own messaging format and session control at the application level.

  • Handles stream control, metadata, and media data at the top layer.

  • In this section, you are going to learn

  • Terminology

  • Version Info

sno

RTMP Version

RFC / Standard

Core / Contribution

Year

1

RTMP (original)

Not an RFC

Adobe RTMP Specification (public release)

2012

2

RTMPE (Encrypted)

Not an RFC

Adobe proprietary encryption extension

2012

3

RTMPS (Secure over TLS)

Not an RFC

Community-adopted over TLS

~2013

4

RTMPT (Tunneled over HTTP)

Not an RFC

Adobe extension for firewall traversal

~2012

5

RTMFP (UDP-based)

RFC 7016

IETF Informational RFC (Adobe contribution)

2013

6

E-RTMP (Enhanced RTMP)

Not an RFC

Community-driven enhancements (e.g., SRS)

~2020

  • Setup

  • Setup

Basic Header Packet

S.No

Protocol Packets

Description

Size(Bytes)

1

Basic Header

Identifies the chunk stream and format

1 to 3 bytes

Format (FMT)

Chunk type (03) indicating header size

2 bits

Chunk Stream ID (CSID)

Identifies the stream

6 bits to 22 bits depending on encoding

Message Header Packet

S.No

Protocol Packets

Description

Size(Bytes)

2

Message Header

Contains timestamp, message length, type, and stream ID

0, 4, 8, or 11 bytes

Timestamp / Delta

Time since start or since previous chunk

3 bytes

Message Length

Size of the message payload

3 bytes

Message Type ID

Type of message (e.g., audio, video, command)

1 byte

Message Stream ID

ID of the stream (little-endian)

4 bytes

Extended Timestamp Packet

S.No

Protocol Packets

Description

Size(Bytes)

3

Extended Timestamp

Used if timestamp exceeds 24 bits

0 or 4 bytes

Extended Timestamp

Used if timestamp 16777215

4 bytes

Payload Packet

S.No

Protocol Packets

Description

Size(Bytes)

4

Payload (Message Body)

Actual audio/video/data content

Variable (up to 128 bytes per chunk by default)

Data

Actual media or control data

Variable (default chunk size is 128 bytes, can be changed)

sno

Use Case

Description

1

Live Streaming Ingest

RTMP is commonly used to send live video from broadcasters (e.g., OBS, vMix) to streaming platforms like YouTube, Facebook Live, and Twitch.

2

Media Server Integration

RTMP is supported by media servers like Wowza, Red5, and NGINX RTMP module for ingesting and redistributing streams.

3

Low-Latency Streaming

RTMP provides low-latency transmission, making it suitable for real-time applications like auctions, gaming, and live events.

4

Video Conferencing

Used in internal or custom-built video conferencing systems where low latency is critical.

5

Surveillance Systems

RTMP is used to stream live feeds from IP cameras to monitoring dashboards or cloud storage.

6

E-learning Platforms

Enables live lectures and webinars with real-time interaction between instructors and students.

7

Corporate Communications

Used for internal live broadcasts, town halls, and training sessions within enterprises.

8

Hybrid Streaming Workflows

RTMP is used as an ingest protocol, which is then transcoded to HLS or DASH for broader device compatibility.

9

Mobile Live Streaming

Many mobile apps use RTMP to stream live video from smartphones to platforms or custom servers.

10

Content Delivery Networks (CDNs)

RTMP is used to push streams to CDNs for global distribution.

11

Live Auctions and Bidding

Real-time video and interaction are essential for online auctions, where RTMP ensures minimal delay.

12

Gaming and Esports

Used to broadcast gameplay with minimal delay to platforms or private servers.

13

Church and Religious Services

Many religious organizations use RTMP to stream services to remote congregations.

14

Event Broadcasting

Concerts, conferences, and sports events use RTMP for live coverage and remote viewing.

15

Interactive Applications

RTMP supports bi-directional data, useful for chat, polls, and interactive overlays in live streams.

sno

Feature

Description

1

Low Latency

RTMP offers near real-time transmission, making it ideal for live streaming and interactive applications.

2

Persistent TCP Connection

Maintains a continuous connection between client and server for uninterrupted streaming.

3

Multiplexing

Supports simultaneous transmission of audio, video, and data over a single connection.

4

Chunking Mechanism

Breaks data into smaller chunks for efficient transmission and buffering.

5

Stream Control Messages

Includes commands for stream start, stop, pause, and resume.

6

Support for Live and On-Demand Streaming

Can handle both real-time broadcasts and pre-recorded content.

7

Flexible Media Types

Transmits audio, video, metadata, and control messages.

8

Adaptive Bitrate (via server-side logic)

Though not client-driven like HLS, RTMP can be configured to switch streams based on server logic.

9

Encryption Support (RTMPE/RTMPS)

Offers secure streaming via proprietary encryption or TLS.

10

Metadata Transmission

Allows sending stream metadata (e.g., duration, resolution, codec info).

11

Command Messaging

Supports remote procedure calls (RPCs) for control and interaction.

12

Cross-Platform Compatibility

Works with various encoders, media servers, and players.

13

Firewall Traversal (RTMPT)

Can tunnel through HTTP to bypass firewalls and proxies.

14

Stream Publishing and Playback

Supports both pushing content to a server and pulling it for playback.

15

Extensibility

Can be extended with custom commands and data formats for specialized applications.

Low Latency - Testcases

S.No

Test Case

Description

Expected Result

1

Establish RTMP Connection

Connect to RTMP server

Connection is established

2

Start Low Latency Stream

Start stream with low latency settings

Stream starts with minimal delay

3

Measure Initial Latency

Measure delay from source to player

Latency is within expected range (e.g., <1s)

4

Enable Low Latency Mode

Enable low latency flag in encoder

Encoder uses low buffer settings

5

Disable Low Latency Mode

Disable low latency mode

Stream uses default latency

6

Stream with Low GOP

Use low GOP size for faster keyframes

Latency is reduced

7

Stream with High GOP

Use high GOP size

Latency increases

8

Use TCP Transport

Use TCP for RTMP

Reliable delivery with low latency

9

Use UDP Transport (RTMFP)

Use RTMFP (if supported)

Lower latency with potential packet loss

10

Stream with Low Buffer

Set player buffer to 1-2 seconds

Playback is near real-time

11

Stream with High Buffer

Set player buffer to 10+ seconds

Latency increases

12

Adaptive Bitrate Enabled

Enable ABR in low latency mode

Bitrate adjusts without increasing latency

13

Adaptive Bitrate Disabled

Disable ABR

Bitrate remains fixed

14

Network Jitter Simulation

Simulate jitter

Stream remains stable

15

Packet Loss Simulation

Simulate 5% packet loss

Stream recovers with minimal impact

16

High Latency Network

Simulate 300ms latency

Stream adapts or buffers

17

Low Latency Network

Simulate 20ms latency

Stream is smooth and real-time

18

Stream Reconnection

Disconnect and reconnect stream

Stream resumes quickly

19

Player Reconnection

Player reconnects after drop

Playback resumes with minimal delay

20

Stream with Audio Only

Stream audio-only RTMP

Latency is minimal

21

Stream with Video Only

Stream video-only RTMP

Latency is minimal

22

Stream with Audio + Video

Stream both audio and video

Latency is within expected range

23

Use Hardware Encoder

Use GPU-based encoder

Lower encoding latency

24

Use Software Encoder

Use CPU-based encoder

Slightly higher latency

25

Use OBS with Low Latency

Configure OBS for low latency

OBS streams with minimal delay

26

Use FFmpeg with Low Latency

Configure FFmpeg for low latency

FFmpeg streams with minimal delay

27

Use Wirecast with Low Latency

Configure Wirecast

Stream is low latency

28

Use vMix with Low Latency

Configure vMix

Stream is low latency

29

Use Wowza Server

Stream to Wowza with low latency

Playback is near real-time

30

Use NGINX RTMP Module

Stream to NGINX RTMP

Low latency is maintained

31

Use Red5 Server

Stream to Red5

Low latency is maintained

32

Use Facebook Live RTMP

Stream to Facebook Live

Latency is within platform limits

33

Use YouTube Live RTMP

Stream to YouTube Live

Latency is within platform limits

34

Use Twitch RTMP

Stream to Twitch

Latency is within platform limits

35

Stream with 720p Resolution

Use 720p video

Latency is low

36

Stream with 1080p Resolution

Use 1080p video

Latency is slightly higher

37

Stream with 4K Resolution

Use 4K video

Latency increases

38

Stream with 30fps

Use 30 frames per second

Latency is stable

39

Stream with 60fps

Use 60 frames per second

Latency is slightly higher

40

Stream with Keyframe Interval 1s

Set keyframe every 1 second

Latency is reduced

41

Stream with Keyframe Interval 5s

Set keyframe every 5 seconds

Latency increases

42

Monitor RTMP Buffer

Check buffer size on server

Buffer is minimal in low latency mode

43

Monitor RTMP Latency

Use monitoring tool

Latency is within target

44

Stream with Metadata

Send metadata with stream

Metadata is delivered in real-time

45

Stream with Captions

Send captions with stream

Captions are synced with video

46

Stream with Subtitles

Send subtitles

Subtitles are displayed in sync

47

Stream with Chat Overlay

Overlay chat on stream

Chat appears in real-time

48

Stream with Analytics

Track latency metrics

Metrics show low latency

49

Stream with CDN

Use CDN for RTMP delivery

Latency is slightly higher

50

Stream with P2P RTMP

Use peer-to-peer RTMP (if supported)

Latency is minimized

Persistent TCP Connection - Testcases

S.No

Test Case

Description

Expected Result

1

Establish TCP Connection

Initiate RTMP connection over TCP

Connection is successfully established

2

Maintain Persistent Connection

Keep TCP connection open during stream

Connection remains active

3

Reconnect After Drop

Simulate connection drop

Client reconnects automatically

4

Connection Timeout Handling

Simulate server timeout

Client retries or closes gracefully

5

Keep-Alive Enabled

Enable TCP keep-alive

Connection stays alive

6

Keep-Alive Disabled

Disable TCP keep-alive

Connection may close on idle

7

Idle Connection Handling

Leave connection idle

Connection remains open

8

High Throughput Streaming

Stream high bitrate video

Connection handles load without drop

9

Low Throughput Streaming

Stream low bitrate video

Connection remains stable

10

Multiple Clients

Connect multiple clients to server

All connections persist independently

11

Server Restart

Restart RTMP server

Clients reconnect or fail gracefully

12

Client Restart

Restart RTMP client

Connection is re-established

13

Network Jitter Simulation

Simulate jitter

Connection remains stable

14

Packet Loss Simulation

Simulate packet loss

Connection persists with retries

15

TCP Retransmission

Drop packets intentionally

TCP retransmits successfully

16

TCP Congestion Control

Simulate congestion

Connection adapts and persists

17

NAT Traversal

Connect through NAT

Connection is maintained

18

Firewall Traversal

Connect through firewall

Connection is allowed and persists

19

VPN Connection

Use VPN for RTMP

Connection remains persistent

20

Proxy Connection

Use proxy server

Connection persists through proxy

21

TLS Over TCP

Use RTMPS (RTMP over TLS)

Secure connection is persistent

22

SSL Certificate Expiry

Use expired cert

Connection fails securely

23

SSL Certificate Valid

Use valid cert

Connection is secure and persistent

24

Authentication Required

Require login for stream

Authenticated connection persists

25

Authentication Failure

Use wrong credentials

Connection is denied

26

Connection with OBS

Stream using OBS

Connection persists during broadcast

27

Connection with FFmpeg

Stream using FFmpeg

Connection persists during broadcast

28

Connection with Wirecast

Stream using Wirecast

Connection persists

29

Connection with vMix

Stream using vMix

Connection persists

30

Connection with Wowza

Connect to Wowza server

Persistent connection is maintained

31

Connection with NGINX RTMP

Connect to NGINX RTMP module

Connection persists

32

Connection with Red5

Connect to Red5 server

Connection persists

33

Connection with Facebook Live

Stream to Facebook Live

Connection persists

34

Connection with YouTube Live

Stream to YouTube Live

Connection persists

35

Connection with Twitch

Stream to Twitch

Connection persists

36

Connection with Custom Server

Connect to custom RTMP server

Connection persists

37

Connection with Mobile Network

Use 4G/5G for RTMP

Connection persists with variable latency

38

Connection with Wi-Fi

Use Wi-Fi for RTMP

Connection persists

39

Connection with Ethernet

Use wired connection

Connection persists with low latency

40

Connection with IPv4

Use IPv4 address

Connection persists

41

Connection with IPv6

Use IPv6 address

Connection persists

42

Connection with Dynamic IP

Change IP during stream

Connection drops or reconnects

43

Connection with Static IP

Use static IP

Connection persists

44

Connection with Port Blocking

Block RTMP port

Connection fails securely

45

Connection with Port Forwarding

Forward RTMP port

Connection persists

46

Connection with QoS Enabled

Enable QoS on network

Connection quality improves

47

Connection with QoS Disabled

Disable QoS

Connection persists with variable quality

48

Connection with Buffer Overflow

Simulate buffer overflow

Connection handles or drops gracefully

49

Connection with Buffer Underflow

Simulate buffer underflow

Connection persists with retries

50

Connection Monitoring

Monitor TCP connection status

Connection remains open and stable

Multiplexing - Testcases

S.No

Test Case

Description

Expected Result

1

Start RTMP Multiplexed Stream

Start stream with audio and video

Both streams are transmitted

2

Audio-Only Multiplexing

Stream only audio

Audio is transmitted without video

3

Video-Only Multiplexing

Stream only video

Video is transmitted without audio

4

Audio + Video + Metadata

Stream with all three

All streams are multiplexed correctly

5

Multiple Audio Tracks

Stream with multiple audio tracks

Tracks are multiplexed and selectable

6

Multiple Video Tracks

Stream with multiple video tracks

Tracks are multiplexed correctly

7

Audio and Captions

Stream audio with captions

Captions are multiplexed with audio

8

Video and Captions

Stream video with captions

Captions are multiplexed with video

9

Audio + Video + Subtitles

Include subtitles in stream

Subtitles are multiplexed correctly

10

Metadata Injection

Inject metadata during stream

Metadata is transmitted in real-time

11

Timed Metadata

Send timed metadata

Metadata is synchronized with media

12

High Bitrate Multiplexing

Use high bitrate for all streams

Multiplexing remains stable

13

Low Bitrate Multiplexing

Use low bitrate

Multiplexing is efficient

14

Dynamic Bitrate Switching

Change bitrate during stream

Multiplexing adapts without interruption

15

Stream with Keyframe Alignment

Align keyframes across tracks

Playback is smooth

16

Stream with Unaligned Keyframes

Misalign keyframes

Playback may stutter or desync

17

Audio Desync Simulation

Delay audio stream

Desync is detected and corrected

18

Video Desync Simulation

Delay video stream

Desync is detected and corrected

19

Metadata Desync Simulation

Delay metadata

Metadata is resynchronized

20

Stream with Different Codecs

Use different codecs for audio/video

Multiplexing handles codec differences

21

Stream with Same Codec

Use same codec for all tracks

Multiplexing is consistent

22

Stream with AAC + H.264

Use AAC for audio, H.264 for video

Standard multiplexing works

23

Stream with MP3 + VP6

Use legacy codecs

Multiplexing is backward compatible

24

Stream with Encrypted Tracks

Encrypt audio/video

Encrypted streams are multiplexed

25

Stream with DRM Metadata

Include DRM info

DRM metadata is multiplexed

26

Stream with SCTE-35 Markers

Insert ad markers

Markers are transmitted correctly

27

Stream with ID3 Tags

Include ID3 metadata

Tags are multiplexed and readable

28

Stream with Custom Metadata

Use custom metadata format

Metadata is transmitted

29

Stream with Real-Time Clock

Include timestamp metadata

Clock is synchronized

30

Stream with GPS Metadata

Include location data

GPS data is multiplexed

31

Stream with Analytics Tags

Include analytics events

Tags are transmitted in real-time

32

Stream with Event Markers

Insert event markers

Events are synchronized

33

Stream with Language Tags

Include language info

Tags are multiplexed

34

Stream with Accessibility Tags

Include accessibility metadata

Tags are transmitted

35

Stream with Multiple Languages

Use multiple language tracks

Tracks are multiplexed and selectable

36

Stream with Alternate Angles

Use multiple camera angles

Angles are multiplexed

37

Stream with 360 Video

Use 360-degree video

Multiplexing supports spatial data

38

Stream with VR Metadata

Include VR orientation data

Metadata is synchronized

39

Stream with Low Latency

Enable low latency mode

Multiplexing remains real-time

40

Stream with High Latency

Simulate delay

Multiplexing handles buffering

41

Stream with Packet Loss

Simulate packet loss

Multiplexing recovers gracefully

42

Stream with Jitter

Simulate jitter

Multiplexing remains stable

43

Stream with Reconnection

Drop and resume stream

Multiplexing resumes correctly

44

Stream with OBS

Use OBS for multiplexed stream

All tracks are transmitted

45

Stream with FFmpeg

Use FFmpeg for multiplexing

Stream is correctly multiplexed

46

Stream with Wirecast

Use Wirecast

Multiplexing is supported

47

Stream with vMix

Use vMix

Multiplexing is supported

48

Stream to Wowza

Send multiplexed stream to Wowza

Server receives all tracks

49

Stream to NGINX RTMP

Send multiplexed stream

NGINX handles all streams

50

Stream to Red5

Send multiplexed stream

Red5 receives and parses all tracks

Chunking Mechanism - Testcases

S.No

Test Case

Description

Expected Result

1

Establish RTMP Connection

Connect to RTMP server

Connection is established

2

Default Chunk Size

Verify default chunk size (128 bytes)

Chunk size is 128 bytes

3

Set Custom Chunk Size

Change chunk size to 4096 bytes

Chunk size is updated

4

Chunk Size Boundary Test

Set chunk size to 1 byte

Smallest chunk size is accepted

5

Max Chunk Size Test

Set chunk size to 65536 bytes

Largest chunk size is accepted

6

Invalid Chunk Size

Set chunk size to 0

Error or fallback to default

7

Chunk Header Format

Validate chunk header structure

Header is correctly parsed

8

Chunk Type 0 Header

Send full header (type 0)

Header is accepted

9

Chunk Type 1 Header

Send partial header (type 1)

Header is accepted

10

Chunk Type 2 Header

Send minimal header (type 2)

Header is accepted

11

Chunk Type 3 Header

Send continuation header (type 3)

Header is accepted

12

Chunk Stream ID Handling

Use multiple chunk stream IDs

Streams are handled independently

13

Interleaved Chunks

Interleave chunks from different streams

Chunks are reassembled correctly

14

Chunk Reassembly

Reassemble fragmented message

Message is reconstructed correctly

15

Chunk Reassembly Failure

Drop a chunk in sequence

Message is incomplete or error raised

16

Chunk with Audio Data

Send audio in chunks

Audio is streamed correctly

17

Chunk with Video Data

Send video in chunks

Video is streamed correctly

18

Chunk with Metadata

Send metadata in chunks

Metadata is parsed correctly

19

Chunk with Control Message

Send control message in chunks

Control message is handled

20

Chunk with Command Message

Send command message in chunks

Command is executed

21

Chunk with User Control Message

Send ping/pong in chunks

Control messages are processed

22

Chunk with Window Acknowledgement

Send window size message

Acknowledgement is received

23

Chunk with Set Peer Bandwidth

Send bandwidth control message

Bandwidth is adjusted

24

Chunk with Acknowledgement

Send ACK message

ACK is received and processed

25

Chunk with Aggregate Message

Send multiple messages in one chunk

Messages are parsed individually

26

Chunk with Timestamp Delta

Use timestamp delta in header

Delta is applied correctly

27

Extended Timestamp Handling

Use extended timestamp field

Timestamp is parsed correctly

28

Chunk with Negative Timestamp

Send invalid timestamp

Error is raised or ignored

29

Chunk with Large Timestamp

Send timestamp > 24 bits

Extended timestamp is used

30

Chunk with Invalid Header

Corrupt header bytes

Error is raised

31

Chunk with Invalid Stream ID

Use invalid stream ID

Error or fallback occurs

32

Chunk with Invalid Message Length

Mismatch declared and actual length

Error is raised

33

Chunk with Incomplete Payload

Send partial message

Message is buffered until complete

34

Chunk with Extra Payload

Send more than declared length

Extra data is discarded or error raised

35

Chunk with Repeated Headers

Send repeated headers

Headers are reused correctly

36

Chunk with Rapid Switching

Switch chunk stream IDs rapidly

No data loss or corruption

37

Chunk with High Bitrate

Send high bitrate stream

Chunks are transmitted efficiently

38

Chunk with Low Bitrate

Send low bitrate stream

Chunks are transmitted slowly

39

Chunk with Network Jitter

Simulate jitter

Chunks are buffered and reassembled

40

Chunk with Packet Loss

Simulate lost chunk

Message is incomplete or error raised

41

Chunk with Reordering

Deliver chunks out of order

Message is reconstructed correctly

42

Chunk with Encryption

Encrypt chunk payload

Encrypted data is transmitted

43

Chunk with Compression

Compress chunk payload

Compressed data is transmitted

44

Chunk with Fragmented Video Frame

Split video frame across chunks

Frame is reconstructed

45

Chunk with Fragmented Audio Frame

Split audio frame across chunks

Frame is reconstructed

46

Chunk with Fragmented Metadata

Split metadata across chunks

Metadata is parsed correctly

47

Chunk with Large Message

Send message > chunk size

Message is split and reassembled

48

Chunk with Small Message

Send message < chunk size

Message is sent in one chunk

49

Chunk with Mixed Message Types

Send audio, video, metadata in sequence

All messages are handled correctly

50

Chunk with Real-Time Monitoring

Monitor chunk transmission

Chunks are logged and analyzed

Stream Control Messages - Testcases

S.No

Test Case

Description

Expected Result

1

Send Stream Begin control message

Stream starts successfully

2

Send Stream EOF Message

Send Stream EOF control message

Stream ends gracefully

3

Send Stream Dry Message

Send Stream Dry control message

Player pauses or buffers

4

Send Set Buffer Length

Set buffer length for stream

Buffer size is updated

5

Send Ping Request

Send ping to client

Client responds with pong

6

Send Ping Response

Send pong to server

Server acknowledges

7

Send Stream Is Recorded

Notify that stream is being recorded

Client updates status

8

Send Stream Is Not Recorded

Notify that stream is not recorded

Client updates status

9

Send Stream Reset Message

Reset stream state

Stream restarts cleanly

10

Send Unknown Control Message

Send undefined control message

Message is ignored or error logged

11

Handle Stream Begin on New Stream

Start new stream with control message

Stream initializes correctly

12

Handle Stream EOF on Active Stream

End active stream

Playback stops

13

Handle Stream Dry on Live Stream

Notify no more data temporarily

Player buffers or pauses

14

Handle Set Buffer Length to 0

Set buffer to zero

Playback is real-time

15

Handle Set Buffer Length to Max

Set buffer to large value

Playback is delayed but smooth

16

Handle Ping Timeout

No pong received

Server closes connection

17

Handle Ping with Delay

Pong delayed

Server waits or retries

18

Handle Multiple Ping Requests

Send multiple pings

Client responds to each

19

Handle Stream Begin After EOF

Restart stream after end

Stream resumes

20

Handle Stream Dry Followed by Begin

Resume stream after dry

Playback continues

21

Handle Stream Reset During Playback

Reset while playing

Playback restarts

22

Handle Stream Reset During Pause

Reset while paused

Playback resets and resumes

23

Handle Stream Reset with Metadata

Reset and send metadata

Metadata is updated

24

Handle Stream Begin with Metadata

Start stream with metadata

Metadata is parsed

25

Handle Stream EOF with Metadata

End stream and log metadata

Metadata is stored

26

Handle Set Buffer Length Mid-Stream

Change buffer during playback

Buffer adjusts dynamically

27

Handle Set Buffer Length Before Start

Set buffer before stream begins

Buffer is applied at start

28

Handle Ping During Playback

Ping client during stream

Client responds without interruption

29

Handle Ping During Pause

Ping client while paused

Client responds

30

Handle Ping During Seek

Ping client during seek

Client responds correctly

31

Handle Ping During Reconnect

Ping client reconnecting

Ping is queued or dropped

32

Handle Stream Begin with Invalid ID

Use invalid stream ID

Error is logged

33

Handle Stream EOF with Invalid ID

Use invalid stream ID

Error is logged

34

Handle Stream Dry with Invalid ID

Use invalid stream ID

Error is logged

35

Handle Set Buffer Length with Invalid ID

Use invalid stream ID

Error is logged

36

Handle Ping with Invalid Timestamp

Send malformed ping

Message is ignored

37

Handle Pong with Invalid Timestamp

Send malformed pong

Message is ignored

38

Handle Stream Begin Twice

Send duplicate begin messages

Second message is ignored

39

Handle Stream EOF Twice

Send duplicate EOF messages

Second message is ignored

40

Handle Stream Dry Twice

Send duplicate dry messages

Second message is ignored

41

Handle Stream Reset Twice

Send reset twice

Stream resets again

42

Handle Ping Flood

Send rapid ping messages

Server throttles or drops

43

Handle Pong Flood

Send rapid pong messages

Server ignores excess

44

Handle Buffer Length Change Rapidly

Change buffer size repeatedly

Player adapts without crash

45

Handle Stream Begin with Delay

Delay stream start after message

Stream starts when data arrives

46

Handle Stream EOF with Delay

Delay EOF after message

Stream ends after buffer drains

47

Handle Stream Dry with Delay

Delay dry message

Player continues until dry

48

Handle Stream Reset with Delay

Delay reset

Stream resets after delay

49

Handle Control Message During Seek

Send control message while seeking

Player handles both actions

50

Handle Control Message During Reconnect

Send control message during reconnect

Message is queued or ignored

Support for Live and On-Demand Streaming - Testcases

S.No

Test Case

Description

Expected Result

1

Live Stream Start

Start a live stream using RTMP

Stream starts successfully

2

On-Demand Stream Start

Play a pre-recorded video via RTMP

Video plays without delay

3

Invalid Stream Key

Use an incorrect stream key

Connection is rejected

4

Stream Key Expiry

Use an expired stream key

Stream fails to start

5

Stream URL Format

Use malformed RTMP URL

Error is thrown

6

Authentication Required

RTMP server requires login

Prompt for credentials

7

No Authentication

RTMP server without login

Stream starts without prompt

8

High Bitrate Stream

Stream at 10 Mbps

Stream plays smoothly

9

Low Bitrate Stream

Stream at 256 Kbps

Stream plays with reduced quality

10

Audio Only Stream

Stream with no video

Audio plays correctly

11

Video Only Stream

Stream with no audio

Video plays correctly

12

Unsupported Codec

Use unsupported video codec

Stream fails with error

13

Supported Codec

Use H.264/AAC

Stream plays successfully

14

Stream Interruption

Disconnect network mid-stream

Stream pauses or stops

15

Stream Resume

Reconnect after interruption

Stream resumes or reconnects

16

Multiple Viewers

100 concurrent viewers

All viewers receive stream

17

Viewer Join Mid-Stream

Join live stream in progress

Viewer sees current live feed

18

Viewer Join On-Demand

Join on-demand stream

Viewer sees from beginning

19

Seek in On-Demand

Seek to middle of video

Playback jumps to correct time

20

Pause/Resume On-Demand

Pause and resume playback

Playback resumes from same point

21

Rewind On-Demand

Rewind 30 seconds

Playback rewinds correctly

22

Fast Forward On-Demand

Skip forward 30 seconds

Playback skips correctly

23

Stream Delay

Measure latency in live stream

Delay within acceptable range

24

Stream Metadata

Send metadata (title, artist)

Metadata is displayed

25

Stream Title Update

Change title mid-stream

Title updates for viewers

26

Stream Thumbnail

Display thumbnail before start

Thumbnail is shown

27

Stream End

End live stream

Viewers see stream end message

28

Archive Live Stream

Save live stream for on-demand

Archive is created successfully

29

Stream Encryption

Use RTMPS (secure RTMP)

Stream is encrypted

30

Stream Without Encryption

Use plain RTMP

Stream is unencrypted

31

Mobile Device Stream

Stream from mobile app

Stream works on mobile

32

Desktop Stream

Stream from OBS/desktop

Stream works on desktop

33

Browser Playback

Play RTMP in browser (via player)

Stream plays in browser

34

CDN Integration

Use RTMP with CDN

Stream is distributed via CDN

35

Geo-blocking

Restrict stream by region

Blocked users can’t access

36

Stream Analytics

Track viewer count

Analytics show correct data

37

Stream Buffering

Simulate slow network

Buffering occurs gracefully

38

Stream Quality Adaptation

Change bitrate dynamically

Quality adjusts without interruption

39

Stream Recording

Record live stream

Recording is saved

40

Stream Restart

Stop and restart stream

New session starts cleanly

41

Stream Schedule

Schedule stream start time

Stream starts as scheduled

42

Stream Notification

Notify users when live

Notification is sent

43

Stream Chat

Enable live chat

Chat works during stream

44

Stream Comments

Enable comments on on-demand

Comments are posted

45

Stream Captioning

Add closed captions

Captions display correctly

46

Stream Language Support

Stream in multiple languages

Language options available

47

Stream Thumbnail Update

Change thumbnail mid-stream

New thumbnail is shown

48

Stream Quality Settings

Allow viewer to change quality

Viewer can switch resolutions

49

Stream DRM

Enable digital rights management

Unauthorized access is blocked

50

Stream Logs

Check server logs for stream

Logs show correct session info

Flexible Media Types - Testcases

S.No

Test Case

Description

Expected Result

1

H.264 Video

Stream H.264 encoded video

Video plays correctly

2

VP6 Video

Stream VP6 encoded video

Video plays correctly

3

AAC Audio

Stream AAC encoded audio

Audio plays correctly

4

MP3 Audio

Stream MP3 encoded audio

Audio plays correctly

5

FLV Container

Use FLV container format

Stream is accepted

6

MP4 Container

Use MP4 container format

Stream is accepted

7

Raw Video

Stream raw video frames

Frames are rendered

8

Raw Audio

Stream raw audio samples

Audio is played

9

Subtitles (SRT)

Include SRT subtitles

Subtitles are displayed

10

Subtitles (WebVTT)

Include WebVTT subtitles

Subtitles are displayed

11

Image Overlay

Overlay image on video

Image appears correctly

12

Animated GIF

Stream animated GIF

Animation plays correctly

13

Metadata Injection

Inject custom metadata

Metadata is received

14

Timed Metadata

Send timed metadata events

Events trigger correctly

15

Multi-language Audio

Stream multiple audio tracks

User can switch languages

16

Multi-bitrate Video

Stream multiple bitrates

Adaptive streaming works

17

Audio + Video Sync

Check sync between audio/video

Sync is maintained

18

Audio Only

Stream only audio

Audio plays without video

19

Video Only

Stream only video

Video plays without audio

20

Image Slideshow

Stream image sequence

Slideshow plays correctly

21

360 Video

Stream 360-degree video

Viewer can pan video

22

VR Video

Stream VR content

VR playback supported

23

HDR Video

Stream HDR video

High dynamic range is preserved

24

4K Video

Stream 4K resolution video

Video plays in 4K

25

8K Video

Stream 8K resolution video

Video plays in 8K

26

Low-Res Video

Stream 144p video

Video plays in low quality

27

High Frame Rate

Stream 60fps video

Smooth playback

28

Low Frame Rate

Stream 15fps video

Video plays with lower smoothness

29

Audio Bitrate Variation

Stream audio at 64kbps to 320kbps

All bitrates play correctly

30

Video Bitrate Variation

Stream video at 500kbps to 10Mbps

All bitrates play correctly

31

Audio Format Switch

Switch from AAC to MP3 mid-stream

Stream continues without error

32

Video Format Switch

Switch from H.264 to VP6 mid-stream

Stream continues or restarts

33

Audio Channel Test

Stream mono, stereo, 5.1

All channels play correctly

34

Video Aspect Ratio

Stream 4:3, 16:9, 21:9

Aspect ratio is preserved

35

Frame Size Change

Change resolution mid-stream

Stream adapts or restarts

36

Audio Sample Rate

Test 44.1kHz, 48kHz, 96kHz

All sample rates play correctly

37

Image Format Support

Stream PNG, JPEG, BMP

All formats render

38

Audio Codec Mismatch

Use unsupported codec

Stream fails gracefully

39

Video Codec Mismatch

Use unsupported codec

Stream fails gracefully

40

Corrupted Media

Stream corrupted file

Error is handled

41

Media Type Detection

Auto-detect media type

Correct type is identified

42

Media Type Logging

Log media types in stream

Logs show correct types

43

Media Type Switching

Switch between media types

Stream handles switch

44

Media Type Filtering

Filter specific media types

Only selected types stream

45

Media Type Prioritization

Prioritize video over audio

Video plays if bandwidth limited

46

Media Type Fallback

Fallback to audio if video fails

Audio continues playing

47

Media Type Negotiation

Negotiate supported types

Compatible types are used

48

Media Type Compatibility

Test with various players

All players support types

49

Media Type in Playlist

Use mixed media in playlist

All items play correctly

50

Media Type in Archive

Archive stream with all types

Archive retains all media types

Adaptive Bitrate - Testcases

S.No

Test Case

Description

Expected Result

1

Initial Bitrate Selection

Start stream with default bitrate

Server selects optimal bitrate

2

High Bandwidth

Simulate high-speed network

Highest bitrate is selected

3

Low Bandwidth

Simulate slow network

Lower bitrate is selected

4

Bandwidth Drop

Drop bandwidth mid-stream

Bitrate is reduced

5

Bandwidth Recovery

Restore bandwidth

Bitrate increases again

6

Sudden Bandwidth Spike

Sudden increase in bandwidth

Bitrate adapts upward

7

Device Capability Detection

Stream to low-end device

Lower bitrate is used

8

Device Switch

Switch from mobile to desktop

Bitrate adjusts accordingly

9

Resolution Change

Change resolution mid-stream

Bitrate adapts to new resolution

10

Frame Rate Change

Change frame rate

Bitrate adjusts accordingly

11

CPU Load High

Simulate high CPU usage

Bitrate is reduced

12

Network Jitter

Introduce jitter

Bitrate adapts to maintain stability

13

Packet Loss

Simulate packet loss

Bitrate is lowered

14

Latency Spike

Introduce high latency

Bitrate is reduced

15

Viewer Join

New viewer joins stream

Optimal bitrate is selected

16

Viewer Reconnect

Viewer reconnects after drop

Bitrate is re-evaluated

17

Multiple Viewers

100 viewers with different networks

Each gets appropriate bitrate

18

Bitrate Switching Delay

Measure time to switch bitrate

Delay is minimal

19

Bitrate Switching Smoothness

Observe playback during switch

No buffering or stutter

20

Bitrate Switching Frequency

Frequent network changes

Bitrate switches efficiently

21

Bitrate Cap

Set max bitrate limit

Bitrate does not exceed cap

22

Bitrate Floor

Set min bitrate limit

Bitrate does not go below floor

23

Manual Override

User selects fixed bitrate

Adaptive logic is bypassed

24

Server Load High

Simulate server overload

Bitrate adapts to reduce load

25

CDN Edge Node

Stream via CDN

Bitrate adapts per region

26

Mobile Network (3G)

Simulate 3G connection

Low bitrate is selected

27

Mobile Network (5G)

Simulate 5G connection

High bitrate is selected

28

Wi-Fi Network

Simulate Wi-Fi

Bitrate adapts to Wi-Fi speed

29

Ethernet Connection

Simulate wired connection

Highest bitrate is used

30

Bitrate Logging

Log bitrate changes

Logs show correct transitions

31

Bitrate Analytics

Analyze bitrate usage

Data reflects network conditions

32

Bitrate Profile Switching

Switch between predefined profiles

Correct profile is applied

33

Stream Start Delay

Delay due to bitrate negotiation

Delay is minimal

34

Stream Restart

Restart stream

Bitrate is re-evaluated

35

Stream Seek

Seek in on-demand stream

Bitrate adapts post-seek

36

Stream Pause/Resume

Pause and resume stream

Bitrate adapts after resume

37

Stream Rewind

Rewind stream

Bitrate adapts to new position

38

Stream Fast Forward

Fast forward stream

Bitrate adapts accordingly

39

Bitrate Mismatch

Server sends unsupported bitrate

Fallback to supported bitrate

40

Bitrate Negotiation Failure

Fail to negotiate bitrate

Default bitrate is used

41

Bitrate Adaptation Disabled

Disable adaptive logic

Fixed bitrate is used

42

Bitrate Adaptation Enabled

Enable adaptive logic

Bitrate changes dynamically

43

Bitrate Adaptation Toggle

Toggle during stream

Bitrate adapts or fixes accordingly

44

Bitrate Adaptation on VOD

Play on-demand content

Bitrate adapts during playback

45

Bitrate Adaptation on Live

Watch live stream

Bitrate adapts in real-time

46

Bitrate Adaptation with DRM

Stream with DRM

Bitrate adapts securely

47

Bitrate Adaptation with Captions

Stream with subtitles

Captions remain synced

48

Bitrate Adaptation with Ads

Stream with mid-roll ads

Bitrate adapts during ads

49

Bitrate Adaptation with Multi-Audio

Stream with multiple audio tracks

Bitrate adapts without audio loss

50

Bitrate Adaptation with Multi-Camera

Switch camera angles

Bitrate adapts per feed

Encryption Support - Testcases

S.No

Test Case

Description

Expected Result

1

RTMPS Connection

Connect using RTMPS URL

Secure connection is established

2

RTMPE Connection

Connect using RTMPE URL

Encrypted session is established

3

Invalid SSL Certificate

Use expired SSL cert

Connection is rejected

4

Self-signed Certificate

Use self-signed cert

Warning or rejection based on policy

5

Valid SSL Certificate

Use valid SSL cert

Connection succeeds

6

Certificate Revocation

Use revoked cert

Connection fails

7

TLS 1.2 Support

Use TLS 1.2

Connection succeeds

8

TLS 1.3 Support

Use TLS 1.3

Connection succeeds

9

SSLv3 Blocked

Attempt SSLv3

Connection is blocked

10

Cipher Suite Negotiation

Use supported cipher

Secure connection is established

11

Unsupported Cipher

Use unsupported cipher

Connection fails

12

Encrypted Stream Playback

Play RTMPS stream

Stream plays securely

13

Encrypted Stream Upload

Publish via RTMPS

Stream uploads securely

14

MITM Attack Simulation

Simulate man-in-the-middle

Connection is blocked

15

Packet Sniffing

Attempt to sniff RTMPS

Data is unreadable

16

Replay Attack

Replay encrypted packets

Server rejects replayed data

17

Session Hijacking

Attempt session hijack

Session is protected

18

Encrypted Metadata

Send metadata over RTMPS

Metadata is encrypted

19

Encrypted Audio

Stream audio over RTMPS

Audio is encrypted

20

Encrypted Video

Stream video over RTMPS

Video is encrypted

21

Encrypted Subtitles

Send subtitles over RTMPS

Subtitles are encrypted

22

Encrypted Chat

Send chat messages

Messages are encrypted

23

Encrypted Stream Logging

Log encrypted stream

Logs do not expose content

24

Encrypted Stream Archiving

Archive RTMPS stream

Archive is secure

25

Encrypted Stream Analytics

Analyze encrypted stream

Data is anonymized

26

RTMPS on Mobile

Stream via RTMPS on mobile

Secure connection works

27

RTMPS on Desktop

Stream via RTMPS on desktop

Secure connection works

28

RTMPS on Browser

Play RTMPS in browser

Stream plays securely

29

RTMPS with CDN

Use RTMPS with CDN

Secure delivery is maintained

30

RTMPS with Firewall

Stream through firewall

Connection allowed if port open

31

RTMPS Port Blocked

Block RTMPS port

Connection fails

32

RTMPS Port Open

Allow RTMPS port

Connection succeeds

33

RTMPE Handshake

Perform RTMPE handshake

Handshake completes successfully

34

RTMPE Key Exchange

Exchange encryption keys

Keys are securely exchanged

35

RTMPE Stream Playback

Play RTMPE stream

Stream plays securely

36

RTMPE Stream Upload

Publish via RTMPE

Stream uploads securely

37

RTMPE with DRM

Use DRM with RTMPE

Content is protected

38

RTMPE with Token Auth

Use token-based auth

Token is encrypted

39

RTMPE with Geo-blocking

Apply geo-blocking

Encrypted stream respects rules

40

RTMPE with Multi-bitrate

Use adaptive bitrate

Bitrate switches securely

41

RTMPE with Captions

Send captions

Captions are encrypted

42

RTMPE with Ads

Insert ads

Ads are encrypted

43

RTMPE with Multi-audio

Stream multiple audio tracks

All tracks encrypted

44

RTMPE with Failover

Failover to backup server

Secure connection is maintained

45

RTMPE Session Timeout

Let session expire

Connection is closed securely

46

RTMPE Session Reconnect

Reconnect after timeout

New secure session is established

47

RTMPE Stream Seek

Seek in encrypted stream

Seek works securely

48

RTMPE Stream Pause/Resume

Pause and resume

Encryption is maintained

49

RTMPE Stream Restart

Restart stream

New secure session starts

50

RTMPE/RTMPS Compatibility

Test both protocols

Both work as expected

Metadata Transmission - Testcases

S.No

Test Case

Description

Expected Result

1

Basic Metadata Transmission

Send basic metadata (title, duration)

Metadata is received correctly

2

Custom Metadata Fields

Send custom key-value pairs

Custom metadata is received

3

Metadata on Stream Start

Send metadata at stream start

Metadata is available immediately

4

Metadata Mid-Stream

Inject metadata during stream

Metadata is received in real-time

5

Metadata on Stream End

Send metadata at stream end

Metadata is logged or stored

6

Timed Metadata Events

Send metadata at specific timestamps

Events trigger at correct times

7

Metadata with Audio

Send metadata with audio-only stream

Metadata is received

8

Metadata with Video

Send metadata with video-only stream

Metadata is received

9

Metadata with AV Stream

Send metadata with audio-video stream

Metadata is synchronized

10

Metadata with Subtitles

Send metadata with captions

Metadata and captions are synced

11

Metadata Format Validation

Send metadata in invalid format

Error is raised or ignored

12

Metadata Encoding

Send UTF-8 encoded metadata

Metadata is correctly decoded

13

Metadata in Different Languages

Send metadata in multiple languages

All languages are displayed correctly

14

Metadata Over RTMPS

Send metadata over encrypted stream

Metadata is securely transmitted

15

Metadata Over RTMPE

Send metadata over RTMPE

Metadata is encrypted

16

Metadata Loss Simulation

Drop metadata packets

Stream continues, metadata is lost

17

Metadata Replay

Replay stream with metadata

Metadata appears at correct times

18

Metadata Logging

Log received metadata

Logs contain correct metadata

19

Metadata in Archive

Archive stream with metadata

Metadata is preserved

20

Metadata in VOD

Play archived stream

Metadata is displayed

21

Metadata in Live Stream

Send metadata in live stream

Metadata is received in real-time

22

Metadata in On-Demand Stream

Send metadata in VOD

Metadata is available on playback

23

Metadata with Ads

Send metadata during ad breaks

Metadata is received correctly

24

Metadata with DRM

Send metadata in DRM-protected stream

Metadata is accessible

25

Metadata with Multi-bitrate

Send metadata across bitrates

Metadata is consistent

26

Metadata with Multi-audio

Send metadata for each audio track

Metadata is track-specific

27

Metadata with Multi-camera

Send metadata per camera feed

Metadata is feed-specific

28

Metadata with Thumbnails

Send thumbnail metadata

Thumbnails are displayed

29

Metadata with Chapters

Send chapter markers

Chapters are accessible

30

Metadata with Geo-tags

Send location metadata

Location is displayed

31

Metadata with Viewer Count

Send live viewer count

Count updates in real-time

32

Metadata with Stream Health

Send stream health metrics

Metrics are displayed

33

Metadata with Bitrate Info

Send current bitrate

Bitrate is shown in player

34

Metadata with Frame Rate

Send frame rate info

Frame rate is displayed

35

Metadata with Resolution

Send resolution info

Resolution is shown

36

Metadata with Device Info

Send device metadata

Device info is logged

37

Metadata with Session ID

Send session identifier

Session is tracked

38

Metadata with User ID

Send user identifier

User is tracked

39

Metadata with Timestamps

Send server timestamps

Timestamps are accurate

40

Metadata with Sync Markers

Send sync points

Playback syncs correctly

41

Metadata with Error Codes

Send error metadata

Errors are logged

42

Metadata with Warnings

Send warning messages

Warnings are displayed

43

Metadata with Stream Title

Update stream title mid-stream

Title updates in player

44

Metadata with Tags

Send stream tags

Tags are displayed

45

Metadata with Ratings

Send content rating

Rating is shown

46

Metadata with Language

Send language info

Language is displayed

47

Metadata with Copyright

Send copyright info

Info is displayed

48

Metadata with Publisher Info

Send publisher metadata

Publisher is shown

49

Metadata with Analytics

Send analytics metadata

Data is collected

50

Metadata with Custom Events

Send app-specific events

Events are triggered

Command Messaging - Testcases

S.No

Test Case

Description

Expected Result

1

Connect Command

Send connect command

Connection is established

2

CreateStream Command

Send createStream command

Stream ID is returned

3

Publish Command

Send publish command

Stream starts publishing

4

Play Command

Send play command

Stream starts playing

5

Pause Command

Send pause command

Stream pauses

6

Resume Command

Send pause(false) command

Stream resumes

7

DeleteStream Command

Send deleteStream command

Stream is deleted

8

CloseStream Command

Send closeStream command

Stream is closed

9

Seek Command

Send seek command

Playback jumps to specified time

10

ReleaseStream Command

Send releaseStream command

Stream is released

11

FCPublish Command

Send FCPublish command

Server acknowledges publish intent

12

FCUnpublish Command

Send FCUnpublish command

Server acknowledges unpublish intent

13

SetBufferLength Command

Set buffer length for stream

Buffer is adjusted

14

Custom Command

Send custom command

Server processes command

15

Command with Parameters

Send command with args

Parameters are parsed correctly

16

Command Without Parameters

Send command without args

Default behavior is triggered

17

Invalid Command Name

Send unknown command

Server returns error

18

Command to Invalid Stream

Send command to non-existent stream

Error is returned

19

Command Order

Send commands in sequence

Commands execute in order

20

Command Timing

Send command at specific time

Command executes on time

21

Command Acknowledgement

Expect response to command

Server sends acknowledgment

22

Command Retry

Retry failed command

Command succeeds on retry

23

Command Timeout

Simulate timeout

Command fails gracefully

24

Command Logging

Log all commands

Logs show correct entries

25

Command Over RTMPS

Send command over secure RTMP

Command is encrypted and processed

26

Command Over RTMPE

Send command over RTMPE

Command is encrypted and processed

27

Command with Metadata

Send command with metadata

Metadata is processed

28

Command with Authentication

Send command after login

Command is accepted

29

Command Without Authentication

Send command without login

Command is rejected

30

Command with Invalid Token

Send command with bad token

Command is denied

31

Command with Session ID

Send command with session info

Session is validated

32

Command with Stream Key

Send command with stream key

Key is validated

33

Command with Delay

Delay command execution

Command executes after delay

34

Command with Priority

Send high-priority command

Command is prioritized

35

Command with Callback

Expect callback on success

Callback is triggered

36

Command with Error Handling

Simulate command failure

Error is returned

37

Command with Retry Logic

Retry on failure

Command eventually succeeds

38

Command with Encryption

Encrypt command payload

Payload is decrypted and processed

39

Command with Compression

Compress command payload

Payload is decompressed

40

Command with Large Payload

Send large command data

Command is processed

41

Command with Unicode

Send command with Unicode text

Text is correctly interpreted

42

Command with Binary Data

Send binary in command

Binary is handled correctly

43

Command with JSON Payload

Send JSON in command

JSON is parsed correctly

44

Command with XML Payload

Send XML in command

XML is parsed correctly

45

Command with Invalid Format

Send malformed command

Error is returned

46

Command with Versioning

Send versioned command

Correct version is executed

47

Command with Multi-Stream

Send command to multiple streams

All streams respond

48

Command with Multi-User

Send command from multiple users

Commands are isolated

49

Command with Logging Disabled

Disable logging

Command is not logged

50

Command with Debug Mode

Enable debug mode

Detailed logs are generated

Cross-Platform Compatibility - Testcases

s.No

S.No

Test Case

Description

Expected Result

1

RTMP on Windows

Stream from Windows OS

Stream plays successfully

2

RTMP on macOS

Stream from macOS

Stream plays successfully

3

RTMP on Linux

Stream from Linux

Stream plays successfully

4

RTMP on Android

Stream from Android device

Stream plays successfully

5

RTMP on iOS

Stream from iOS device

Stream plays successfully

6

RTMP on Smart TV

Stream on smart TV app

Stream plays successfully

7

RTMP on Web Browser

Play RTMP via browser player

Stream plays successfully

8

RTMP on OBS Studio

Publish stream using OBS

Stream is published

9

RTMP on XSplit

Publish stream using XSplit

Stream is published

10

RTMP on VLC Player

Play RTMP stream in VLC

Stream plays successfully

11

RTMP on FFmpeg

Use FFmpeg to stream

Stream is transmitted

12

RTMP on Wirecast

Stream using Wirecast

Stream is published

13

RTMP on Streamlabs

Stream using Streamlabs

Stream is published

14

RTMP on Safari

Play RTMP via Safari-compatible player

Stream plays

15

RTMP on Chrome

Play RTMP via Chrome-compatible player

Stream plays

16

RTMP on Firefox

Play RTMP via Firefox-compatible player

Stream plays

17

RTMP on Edge

Play RTMP via Edge-compatible player

Stream plays

18

RTMP on Opera

Play RTMP via Opera-compatible player

Stream plays

19

RTMP on ARM Devices

Stream on ARM-based devices

Stream plays

20

RTMP on Intel Devices

Stream on Intel-based devices

Stream plays

21

RTMP on AMD Devices

Stream on AMD-based devices

Stream plays

22

RTMP on Chromebook

Stream on Chrome OS

Stream plays

23

RTMP on Raspberry Pi

Stream on Raspberry Pi

Stream plays

24

RTMP on Virtual Machine

Stream from VM

Stream plays

25

RTMP on Emulator

Stream from Android/iOS emulator

Stream plays

26

RTMP on Game Console

Stream on Xbox/PlayStation browser

Stream plays

27

RTMP on Set-Top Box

Stream on Fire TV/Apple TV

Stream plays

28

RTMP on IoT Device

Stream on embedded device

Stream plays

29

RTMP with Adaptive Bitrate

Test ABR on all platforms

Bitrate adapts correctly

30

RTMP with Encryption

Test RTMPS on all platforms

Secure stream plays

31

RTMP with Metadata

Test metadata on all platforms

Metadata is displayed

32

RTMP with Subtitles

Test captions on all platforms

Subtitles are shown

33

RTMP with Multi-language

Test audio tracks on all platforms

Language switching works

34

RTMP with Multi-resolution

Test resolution switching

Works across platforms

35

RTMP with Chat Integration

Test chat overlay

Chat works on all platforms

36

RTMP with Ads

Test ad playback

Ads play correctly

37

RTMP with DRM

Test DRM-protected stream

Stream plays securely

38

RTMP with CDN

Test CDN delivery

Stream plays from nearest node

39

RTMP with Geo-blocking

Test region restrictions

Access is blocked/allowed

40

RTMP with Token Auth

Test token-based access

Auth works on all platforms

41

RTMP with Session Timeout

Test session expiry

Session ends correctly

42

RTMP with Reconnect Logic

Test auto-reconnect

Stream resumes after drop

43

RTMP with Low Bandwidth

Test on slow networks

Stream adapts or buffers

44

RTMP with High Latency

Test on high-latency networks

Stream plays with delay

45

RTMP with Packet Loss

Simulate packet loss

Stream degrades gracefully

46

RTMP with Firewall

Test behind firewall

Stream plays if port open

47

RTMP with Proxy

Test via proxy server

Stream plays securely

48

RTMP with VPN

Test via VPN

Stream plays securely

49

RTMP with IPv6

Test on IPv6 network

Stream plays successfully

50

RTMP with IPv4

Test on IPv4 network

Stream plays successfully

Firewall Traversal - Testcases

S.No

Test Case

Description

Expected Result

1

RTMPT Connection

Connect using RTMPT URL

Connection is established via HTTP

2

RTMPT over Port 80

Use port 80 for RTMPT

Connection succeeds

3

RTMPT over Port 443

Use port 443 for RTMPT

Connection succeeds

4

RTMPT with HTTP Proxy

Connect through HTTP proxy

Stream plays successfully

5

RTMPT with Transparent Proxy

Connect through transparent proxy

Stream plays successfully

6

RTMPT with Authenticated Proxy

Use proxy with login

Authentication prompt appears

7

RTMPT with Blocked RTMP Port

Block port 1935

RTMPT still connects via HTTP

8

RTMPT with Deep Packet Inspection

Simulate DPI firewall

RTMPT bypasses inspection

9

RTMPT with Packet Fragmentation

Fragment RTMPT packets

Stream remains stable

10

RTMPT with Load Balancer

Use HTTP load balancer

Stream routes correctly

11

RTMPT with CDN

Use RTMPT with CDN

Stream is delivered via edge nodes

12

RTMPT with SSL Termination

Terminate SSL at edge

RTMPT continues securely

13

RTMPT with NAT

Connect behind NAT

Stream plays successfully

14

RTMPT with Captive Portal

Connect via captive Wi-Fi

Stream resumes after login

15

RTMPT with VPN

Use VPN with RTMPT

Stream plays securely

16

RTMPT with IPv6

Use IPv6 network

RTMPT connects successfully

17

RTMPT with IPv4

Use IPv4 network

RTMPT connects successfully

18

RTMPT with Mobile Network

Use 4G/5G network

RTMPT stream plays

19

RTMPT with Satellite Internet

Use high-latency network

RTMPT adapts and plays

20

RTMPT with Packet Loss

Simulate 10% packet loss

Stream degrades gracefully

21

RTMPT with High Latency

Simulate 500ms latency

Stream buffers but plays

22

RTMPT with Bandwidth Throttle

Limit bandwidth to 512kbps

Stream adapts bitrate

23

RTMPT with Session Timeout

Let session expire

Connection is closed

24

RTMPT Session Reconnect

Reconnect after timeout

Session resumes

25

RTMPT with Multiple Clients

100 clients connect via RTMPT

All connect successfully

26

RTMPT with Authentication

Use token-based auth

Authenticated successfully

27

RTMPT with Invalid Token

Use expired token

Connection is rejected

28

RTMPT with Encrypted Stream

Use RTMPT with RTMPS

Stream is encrypted

29

RTMPT with Metadata

Send metadata over RTMPT

Metadata is received

30

RTMPT with Subtitles

Send captions over RTMPT

Subtitles are displayed

31

RTMPT with Multi-bitrate

Adaptive bitrate over RTMPT

Bitrate adjusts dynamically

32

RTMPT with Multi-audio

Stream multiple audio tracks

Tracks switch correctly

33

RTMPT with Ads

Insert mid-roll ads

Ads play correctly

34

RTMPT with DRM

Use DRM-protected stream

Content is secure

35

RTMPT with Chat

Enable live chat

Chat messages are sent/received

36

RTMPT with Analytics

Track viewer stats

Analytics are collected

37

RTMPT with Logging

Log RTMPT session

Logs show correct data

38

RTMPT with Debug Mode

Enable debug

Detailed logs are generated

39

RTMPT with Custom Headers

Send custom HTTP headers

Headers are received

40

RTMPT with HTTP/1.1

Use HTTP/1.1

Stream works correctly

41

RTMPT with HTTP/2

Attempt HTTP/2

Fallback to HTTP/1.1 if unsupported

42

RTMPT with Chunked Transfer

Use chunked encoding

Stream plays correctly

43

RTMPT with Keep-Alive

Use persistent connections

Fewer reconnections

44

RTMPT with Session ID

Track session ID

Session is maintained

45

RTMPT with Stream Key

Use stream key auth

Key is validated

46

RTMPT with Invalid URL

Use malformed RTMPT URL

Connection fails

47

RTMPT with Server Failover

Fail primary server

Stream switches to backup

48

RTMPT with Load Testing

Simulate 1000 clients

Server handles load

49

RTMPT with Browser Player

Play via browser-compatible player

Stream plays

50

RTMPT with Mobile App

Play via mobile app

Stream plays successfully

Stream Publishing and Playback - Testcases

S.No

Test Case

Description

Expected Result

1

Start Stream Publishing

Begin publishing a live stream

Stream starts successfully

2

Stop Stream Publishing

End the live stream

Stream stops cleanly

3

Pause Stream Publishing

Pause the stream

Stream pauses without error

4

Resume Stream Publishing

Resume paused stream

Stream resumes from pause point

5

Publish with Valid Stream Key

Use correct stream key

Stream is accepted

6

Publish with Invalid Stream Key

Use incorrect stream key

Publishing is rejected

7

Publish with Expired Key

Use expired stream key

Publishing fails

8

Publish with No Key

Attempt to publish without key

Publishing is denied

9

Publish with Authentication

Use login credentials

Authenticated and stream starts

10

Publish Without Authentication

Skip login

Publishing is denied

11

Publish with Metadata

Include metadata in stream

Metadata is transmitted

12

Publish with Subtitles

Include captions

Subtitles are visible

13

Publish with Multi-bitrate

Use adaptive bitrate

Bitrate adjusts dynamically

14

Publish with Audio Only

Stream audio without video

Audio plays correctly

15

Publish with Video Only

Stream video without audio

Video plays correctly

16

Publish with High Bitrate

Use 10 Mbps bitrate

Stream plays in high quality

17

Publish with Low Bitrate

Use 256 Kbps bitrate

Stream plays in low quality

18

Publish with Unsupported Codec

Use unsupported format

Stream is rejected

19

Publish with Supported Codec

Use H.264/AAC

Stream is accepted

20

Publish from OBS

Use OBS Studio

Stream is published

21

Publish from Mobile App

Use mobile RTMP app

Stream is published

22

Publish from FFmpeg

Use FFmpeg command

Stream is published

23

Publish from Web App

Use browser-based tool

Stream is published

24

Playback on Desktop

Play stream on desktop

Stream plays smoothly

25

Playback on Mobile

Play stream on mobile

Stream plays smoothly

26

Playback on Smart TV

Play stream on smart TV

Stream plays correctly

27

Playback in Browser

Use browser player

Stream plays correctly

28

Playback in VLC

Use VLC media player

Stream plays correctly

29

Playback with Delay

Measure latency

Delay is within acceptable range

30

Playback with Buffering

Simulate slow network

Stream buffers gracefully

31

Playback with Rewind

Rewind on-demand stream

Playback jumps back

32

Playback with Seek

Seek to specific time

Playback jumps to correct point

33

Playback with Pause/Resume

Pause and resume playback

Playback resumes correctly

34

Playback with Captions

Enable subtitles

Captions are displayed

35

Playback with Multi-language

Switch audio tracks

Language changes correctly

36

Playback with Ads

Insert mid-roll ads

Ads play correctly

37

Playback with DRM

Use DRM-protected stream

Stream plays securely

38

Playback with Token Auth

Use token to access stream

Access is granted

39

Playback with Invalid Token

Use wrong token

Access is denied

40

Playback with Geo-blocking

Restrict by region

Access is blocked if outside region

41

Playback with CDN

Use CDN for delivery

Stream plays from nearest node

42

Playback with Analytics

Track viewer stats

Analytics are collected

43

Playback with Chat

Enable live chat

Chat works during playback

44

Playback with Comments

Enable comments on VOD

Comments are posted

45

Playback with Thumbnail

Show preview image

Thumbnail is displayed

46

Playback with Archive

Play archived stream

Archive plays correctly

47

Playback with Session Timeout

Let session expire

Playback ends

48

Playback with Reconnect

Reconnect after drop

Playback resumes

49

Playback with Low Bandwidth

Simulate poor network

Playback adapts or buffers

50

Playback with High Latency

Simulate 500ms latency

Playback continues with delay

Extensibility - Testcases

S.No

Test Case

Description

Expected Result

1

Custom Command Support

Send a custom RTMP command

Server processes the command

2

Custom Metadata Injection

Inject custom metadata

Metadata is transmitted and received

3

Plugin Integration

Integrate RTMP with a plugin

Plugin functions as expected

4

Module Hooking

Hook into RTMP events

Custom logic is triggered

5

Extend Publish Command

Add parameters to publish

Server handles extended command

6

Extend Play Command

Add parameters to play

Playback respects new parameters

7

Custom Authentication Module

Use custom auth logic

Auth is enforced correctly

8

Custom Logging Module

Extend logging behavior

Logs include custom data

9

Custom Error Handling

Add custom error codes

Errors are handled gracefully

10

Extend Stream Lifecycle

Add hooks to stream start/stop

Hooks are triggered

11

Extend RTMP Handshake

Modify handshake logic

Connection is established

12

Add Custom Headers

Send custom headers

Headers are received

13

Extend RTMP URL Format

Add query parameters

Server parses them correctly

14

Custom Stream Key Format

Use non-standard key format

Server accepts and validates

15

Extend RTMP Packet

Add fields to RTMP packets

Packets are parsed correctly

16

Extend RTMP Chunking

Modify chunk size logic

Stream remains stable

17

Add Custom Control Messages

Define new control types

Server handles them

18

Extend RTMP Session

Add session-level metadata

Metadata is stored and retrieved

19

Extend RTMP Protocol Version

Add versioning support

Server negotiates version

20

Extend RTMP with JSON

Send JSON payloads

JSON is parsed correctly

21

Extend RTMP with XML

Send XML payloads

XML is parsed correctly

22

Extend RTMP with Binary Data

Send binary blobs

Data is handled correctly

23

Extend RTMP with Encryption

Add custom encryption layer

Stream is secure

24

Extend RTMP with Compression

Add compression logic

Stream is compressed and decompressed

25

Extend RTMP with DRM

Add DRM hooks

Content is protected

26

Extend RTMP with Analytics

Add analytics hooks

Data is collected

27

Extend RTMP with CDN

Add CDN-specific logic

Stream is routed correctly

28

Extend RTMP with Geo-blocking

Add region checks

Access is restricted

29

Extend RTMP with Token Auth

Add token validation

Tokens are validated

30

Extend RTMP with OAuth

Integrate OAuth flow

Auth is successful

31

Extend RTMP with Webhooks

Trigger webhooks on events

Webhooks are called

32

Extend RTMP with REST API

Expose RTMP controls via API

API works as expected

33

Extend RTMP with GraphQL

Query stream metadata

GraphQL returns correct data

34

Extend RTMP with MQTT

Send RTMP events to MQTT

Messages are published

35

Extend RTMP with Kafka

Stream events to Kafka

Events are queued

36

Extend RTMP with Redis

Store session data in Redis

Data is stored and retrieved

37

Extend RTMP with Database

Log stream data to DB

Data is persisted

38

Extend RTMP with AI

Use AI to analyze stream

AI module receives data

39

Extend RTMP with Captions

Add real-time captioning

Captions are displayed

40

Extend RTMP with Translation

Add live translation

Translated text is shown

41

Extend RTMP with Chat

Add chat overlay

Chat is integrated

42

Extend RTMP with Polls

Add interactive polls

Polls are displayed

43

Extend RTMP with Reactions

Add emoji reactions

Reactions are shown

44

Extend RTMP with Ads

Insert custom ads

Ads are played

45

Extend RTMP with Scheduling

Add stream scheduling logic

Streams start on time

46

Extend RTMP with Archiving

Add custom archive logic

Streams are saved

47

Extend RTMP with Notifications

Send alerts on events

Notifications are sent

48

Extend RTMP with Monitoring

Add health checks

Metrics are reported

49

Extend RTMP with Failover

Add backup stream logic

Failover works

50

Extend RTMP with Load Balancing

Add load balancing logic

Traffic is distributed

  • Reference links