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.
Topics in this section,
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