MPEG-DASH - Dynamic Adaptive Streaming over HTTP
What is MPEG-DASH?
MPEG-DASH, or Dynamic Adaptive Streaming over HTTP, is a video streaming protocol that enables smooth delivery of media content over the internet by adapting to the viewer’s network conditions. It works by dividing video into small segments at various quality levels and delivering them over standard HTTP.
Why MPEG-DASH is Useful?
Adapts video quality dynamically based on real-time internet speed.
Minimizes buffering and playback interruptions.
Uses standard HTTP servers, making it easy to implement and scale.
Compatible with multiple devices and platforms without requiring plugins.
How it works?
Video is encoded into segments – Each segment is available in multiple bitrates (quality levels).
Client requests an MPD file – The Media Presentation Description lists all available segments and qualities.
Client selects segments – Based on current bandwidth, the client downloads the best-quality segment it can play smoothly.
Playback adapts – The client continuously monitors network conditions and switches quality up or down as needed.
Where is MPEG-DASH used?
Video streaming services – Such as YouTube, Netflix, and others.
Live event broadcasting – For sports, concerts, and news.
E-learning platforms – To deliver adaptive video lectures.
Enterprise training – For scalable and efficient video delivery in corporate environments.
Which OSI layer does this protocol belong to?
It defines how video content is requested and delivered using HTTP.
It uses application-level logic to adapt to changing network conditions.
It operates on top of standard web protocols like HTTP and TCP.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
RFC Details |
||||
---|---|---|---|---|
sno |
MPEG-DASH Version |
RFC / Standard |
Core / Contribution |
Year |
1 |
MPEG-DASH Part 1: Media Presentation Description and Segment Formats |
ISO/IEC 23009-1 |
Core |
2012 |
2 |
MPEG-DASH Part 2: Conformance and Reference Software |
ISO/IEC 23009-2 |
Core |
2014 |
3 |
MPEG-DASH Part 3: Implementation Guidelines |
ISO/IEC 23009-3 |
Contribution |
2015 |
4 |
MPEG-DASH Part 4: Segment Encryption and Authentication |
ISO/IEC 23009-4 |
Contribution |
2016 |
5 |
MPEG-DASH Part 5: Server and Network Assisted DASH (SAND) |
ISO/IEC 23009-5 |
Contribution |
2017 |
6 |
MPEG-DASH Part 6: DASH with Server Push and WebSockets |
ISO/IEC 23009-6 |
Contribution |
2018 |
7 |
MPEG-DASH Part 7: Delivery of CMAF Content with DASH |
ISO/IEC 23009-7 |
Contribution |
2019 |
8 |
MPEG-DASH Part 8: Session-Based DASH Operation |
ISO/IEC 23009-8 |
Contribution |
2020 |
Setup
Setup
MPD File Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
MPD File |
XML manifest that describes media content, segment URLs, timing, codecs, etc. |
1,000 10,000+ |
MPD (root element) |
Root XML element that defines the DASH manifest and its attributes |
100 300 |
|
BaseURL |
Specifies the base URL for segment retrieval |
50 200 |
|
Period |
Defines a time period in the presentation (can contain multiple AdaptationSets) |
100 500 |
|
AdaptationSet |
Groups media content alternatives (e.g., different bitrates or languages) |
200 1,000 |
|
Representation |
Describes a specific encoding (resolution, bitrate, codec) of the media |
200 800 |
|
SegmentTemplate |
Template for segment URLs and timing info |
100 300 |
|
SegmentList / SegmentBase |
Alternative to SegmentTemplate, lists or defines segment access info |
200 1,000 |
|
ContentProtection |
DRM-related info (e.g., Widevine, PlayReady) |
100 500 |
|
AudioChannelConfiguration |
Specifies audio channel layout (e.g., stereo, 5.1) |
50 150 |
|
Role, Accessibility, Rating |
Metadata for accessibility, parental control, etc. |
50 200 |
Initialization Segment Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
Initialization Segment |
Contains codec info and metadata (e.g., ftyp, moov boxes in fMP4) |
1,000 5,000 |
ftyp |
File Type Box: Identifies the file type and compatibility (e.g., isom, mp42) |
20 100 |
|
moov |
Movie Box: Container for all metadata about the presentation |
500 4,000 |
|
mvhd |
Movie Header Box: Global information like timescale and duration |
100 200 |
|
trak |
Track Box: Contains metadata for each track (video, audio, etc.) |
300 2,000+ |
|
tkhd |
Track Header Box: Info about track ID, duration, dimensions, etc. |
100 300 |
|
mdia |
Media Box: Describes media-specific info (language, handler, etc.) |
200 1,000 |
|
mdhd |
Media Header Box: Timescale and duration for the track |
50 150 |
|
hdlr |
Handler Reference Box: Specifies the type of media (e.g., video) |
50 100 |
|
minf |
Media Information Box: Contains sample table and codec info |
200 800 |
|
stbl |
Sample Table Box: Describes how media samples are stored |
200 1,000 |
|
pssh (optional) |
Protection System Specific Header: DRM info (e.g., Widevine, PlayReady) |
100 500 |
Media Segment Packet
Segment Index Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
4 |
Segment Index (sidx) |
Optional index for random access and seeking |
100 500 |
Box Header |
Standard MP4 box header: size and type (sidx) |
8 |
|
Version |
Version of the box (usually 0 or 1) |
1 |
|
Flags |
Reserved flags (usually 0) |
3 |
|
Reference ID |
Track ID this index refers to |
4 |
|
Timescale |
Timescale used for time values |
4 |
|
Earliest Presentation Time |
Start time of the first referenced segment (32 or 64 bits depending on version) |
4 or 8 |
|
First Offset |
Byte offset from the end of sidx to the first referenced segment |
4 or 8 |
|
Reserved |
Reserved bits |
2 |
|
Reference Count |
Number of segment references listed |
2 |
|
Reference Entries |
List of segment references, each with: |
12 N (N = number of entries) |
|
Reference Type |
1 bit: 0 = media segment, 1 = index segment |
||
Referenced Size |
31 bits: size of the referenced segment |
||
Subsegment Duration |
Duration of the segment in timescale units |
||
SAP Flags |
Sync Access Point flags (random access info) |
Adaptation Set Info Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
5 |
Adaptation Set Info |
Info about available bitrates, resolutions, languages in MPD |
500 2,000 |
AdaptationSet (element) |
Container for a group of interchangeable media streams (e.g., different bitrates or languages) |
100 300 |
|
id |
Unique identifier for the adaptation set |
10 30 |
|
mimeType |
Specifies the media type (e.g., video/mp4, audio/mp4) |
20 50 |
|
codecs |
Codec used (e.g., avc1.4d401f, mp4a.40.2) |
20 50 |
|
lang |
Language code for audio/subtitle tracks (e.g., en, fr) |
5 10 |
|
contentType |
Type of content (video, audio, text) |
10 20 |
|
Role |
Describes the role of the content (e.g., main, alternate) |
10 30 |
|
Accessibility |
Accessibility features (e.g., captions, audio descriptions) |
10 30 |
|
SegmentTemplate |
Template for generating segment URLs |
100 300 |
|
Representation (1 or more) |
Each representation defines a specific bitrate/resolution version of the content |
100 500+ per entry |
Representation Info Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
6 |
Representation Info |
Details for each bitrate/resolution stream in MPD |
200 1,000 |
Representation (element) |
Defines a specific version of the media (e.g., 720p, 1080p) |
50 150 |
|
id |
Unique identifier for the representation |
10 30 |
|
bandwidth |
Bitrate in bits per second (e.g., 1500000 for 1.5 Mbps) |
10 20 |
|
width |
Video width in pixels (e.g., 1280) |
5 10 |
|
height |
Video height in pixels (e.g., 720) |
5 10 |
|
frameRate |
Frame rate (e.g., 30, 60) |
5 10 |
|
codecs |
Codec string (e.g., avc1.4d401f, mp4a.40.2) |
20 50 |
|
mimeType |
Media type (e.g., video/mp4, audio/mp4) |
20 50 |
|
SegmentTemplate or BaseURL |
Defines how to locate media segments for this representation |
50 300 |
DRM/Encryption Info Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
7 |
DRM/Encryption Info |
Optional fields for content protection (e.g., pssh boxes, license URLs) |
200 1,000 |
ContentProtection (element) |
Root element for DRM info in the MPD |
50 150 |
|
schemeIdUri |
Identifies the DRM system (e.g., Widevine, PlayReady) |
30 100 |
|
value |
Optional field indicating the version or profile of the DRM |
10 50 |
|
cenc:default_KID |
Default Key ID used for encryption (UUID format) |
36 50 |
|
pssh (in MPD or fMP4) |
Protection System Specific Header: base64-encoded DRM data |
100 500 |
|
licenseUrl (optional) |
URL to acquire the decryption license |
50 150 |
|
keySystem (optional) |
Identifies the key system used (e.g., com.widevine.alpha) |
30 100 |
Use Cases |
||
---|---|---|
sno |
Use Case |
Description |
1 |
Video-on-Demand (VoD) |
Enables streaming of pre-recorded content with adaptive bitrate switching. |
2 |
Live Streaming |
Supports real-time broadcasting with low latency and adaptive quality. |
3 |
Multi-Device Playback |
Allows seamless playback across TVs, smartphones, tablets, and desktops. |
4 |
Adaptive Bitrate Streaming |
Automatically adjusts video quality based on network conditions. |
5 |
DRM-Protected Content |
Integrates with encryption and DRM systems like Widevine and PlayReady. |
6 |
Multi-Language Support |
Supports multiple audio tracks and subtitles for global audiences. |
7 |
Ad Insertion |
Enables dynamic ad insertion using SCTE-35 markers and MPD updates. |
8 |
Offline Playback |
Allows downloading of segments for later viewing without internet. |
9 |
360 and VR Video |
Supports immersive video formats with viewport-adaptive streaming. |
10 |
Low-Latency Streaming |
Enables near real-time streaming for sports, news, and interactive content. |
Basic Features |
||
---|---|---|
Sno |
Feature |
Description |
1 |
Adaptive Bitrate Streaming |
Automatically adjusts video quality based on users network conditions. |
2 |
Segmented Media Delivery |
Media is divided into small segments (e.g., 210 seconds) for efficient delivery. |
3 |
MPD (Manifest) File |
XML-based file that describes media content, timing, and segment URLs. |
4 |
Codec Agnostic |
Supports various audio/video codecs (e.g., H.264, H.265, AAC, Opus). |
5 |
Transport over HTTP |
Uses standard HTTP servers and CDNsno need for special streaming servers. |
6 |
Multi-Device Support |
Works across desktops, smartphones, smart TVs, and tablets. |
7 |
DRM Integration |
Supports encryption and DRM systems like Widevine, PlayReady, and FairPlay. |
8 |
Live and On-Demand Support |
Suitable for both live broadcasts and video-on-demand (VoD) content. |
9 |
Multi-Language and Subtitles |
Allows multiple audio tracks and subtitle files in different languages. |
10 |
Open Standard |
Developed by MPEG and standardized as ISO/IEC 23009-1. |
Adaptive Bitrate Streaming - Testcases
Adaptive Bitrate Streaming |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Initial Bitrate Selection |
Start playback with default bitrate |
Player selects optimal initial bitrate |
2 |
Bitrate Increase on High Bandwidth |
Increase bitrate when bandwidth improves |
Higher quality stream selected |
3 |
Bitrate Decrease on Low Bandwidth |
Decrease bitrate when bandwidth drops |
Lower quality stream selected |
4 |
Bitrate Stability on Stable Network |
Maintain bitrate on stable connection |
No unnecessary switching |
5 |
Bitrate Switch on Network Jitter |
Switch bitrate due to jitter |
Playback remains smooth |
6 |
Bitrate Switch on Packet Loss |
Switch to lower bitrate on loss |
Playback continues without buffering |
7 |
Bitrate Switch on Latency Spike |
Detect latency and adapt bitrate |
Playback adjusts to avoid stalling |
8 |
Bitrate Switch on Buffer Underrun |
Reduce bitrate when buffer is low |
Prevents playback interruption |
9 |
Bitrate Switch on Buffer Overrun |
Increase bitrate when buffer is full |
Utilizes available bandwidth |
10 |
Bitrate Switch on Resolution Change |
Adapt to screen resolution |
Appropriate bitrate selected |
11 |
Bitrate Switch on Device Type |
Adapt bitrate for mobile vs desktop |
Optimal quality for device |
12 |
Bitrate Switch on Orientation Change |
Adapt to portrait/landscape |
Stream adjusts resolution |
13 |
Bitrate Switch on Network Type |
Adapt to Wi-Fi vs 4G/5G |
Bitrate optimized for network |
14 |
Bitrate Switch on User Movement |
Adapt to mobile handoff |
Seamless playback maintained |
15 |
Bitrate Switch on VPN |
Adapt to VPN routing |
Playback remains smooth |
16 |
Bitrate Switch on Proxy |
Adapt to proxy latency |
Stream adjusts bitrate |
17 |
Bitrate Switch on CDN Node Change |
Adapt to new CDN node |
Playback continues without buffering |
18 |
Bitrate Switch on Server Load |
Adapt to server congestion |
Stream quality adjusted |
19 |
Bitrate Switch on Browser Type |
Adapt to browser capabilities |
Compatible bitrate selected |
20 |
Bitrate Switch on Player Buffer Size |
Use buffer size to guide bitrate |
Efficient streaming |
21 |
Bitrate Switch on Playback Speed |
Adapt to 1.5x or 2x speed |
Bitrate adjusted accordingly |
22 |
Bitrate Switch on User Preference |
Respect user quality setting |
Manual override applied |
23 |
Bitrate Switch on Accessibility Mode |
Adapt for low-vision mode |
Lower bitrate with clarity |
24 |
Bitrate Switch on Audio-Only Mode |
Switch to audio-only |
Saves bandwidth |
25 |
Bitrate Switch on Video-Only Mode |
Disable audio stream |
Video bitrate optimized |
26 |
Bitrate Switch on Multi-Stream |
Adapt bitrate for multiple tracks |
All streams synchronized |
27 |
Bitrate Switch on DRM |
Adapt bitrate with DRM enabled |
Secure and smooth playback |
28 |
Bitrate Switch on Encrypted Segments |
Handle encrypted chunks |
Bitrate adapts without error |
29 |
Bitrate Switch on Segment Download Time |
Use download time to guide bitrate |
Efficient segment loading |
30 |
Bitrate Switch on Segment Size |
Use segment size to adjust bitrate |
Prevents buffer overflow |
31 |
Bitrate Switch on Manifest Update |
Adapt to new MPD info |
Bitrate selection updated |
32 |
Bitrate Switch on Live Stream |
Adapt bitrate in live DASH |
Real-time switching |
33 |
Bitrate Switch on VOD |
Adapt bitrate in on-demand |
Seamless playback |
34 |
Bitrate Switch on Seek Operation |
Maintain quality after seek |
No quality drop |
35 |
Bitrate Switch on Pause/Resume |
Resume with optimal bitrate |
No buffering |
36 |
Bitrate Switch on Rewind |
Rewind with correct bitrate |
Smooth playback |
37 |
Bitrate Switch on Fast Forward |
Fast forward with adaptive bitrate |
No stalls |
38 |
Bitrate Switch on Playlist Reload |
Reload MPD and adapt bitrate |
Playback continues |
39 |
Bitrate Switch on Segment Error |
Handle segment failure |
Switch to alternate bitrate |
40 |
Bitrate Switch on Segment Retry |
Retry with lower bitrate |
Playback resumes |
41 |
Bitrate Switch on ABR Algorithm Change |
Switch ABR logic |
Bitrate adapts correctly |
42 |
Bitrate Switch on Bandwidth Estimation |
Use estimated bandwidth |
Accurate bitrate selection |
43 |
Bitrate Switch on Throughput Drop |
Detect throughput drop |
Bitrate reduced |
44 |
Bitrate Switch on Throughput Spike |
Detect throughput increase |
Bitrate increased |
45 |
Bitrate Switch on Buffer Health |
Use buffer fullness |
Bitrate adjusted accordingly |
46 |
Bitrate Switch on User Interaction |
Adapt after user input |
Playback remains smooth |
47 |
Bitrate Switch on Analytics Feedback |
Use analytics to guide bitrate |
Data-driven adaptation |
48 |
Bitrate Switch on Error Recovery |
Recover from error with new bitrate |
Playback continues |
49 |
Bitrate Switch on Device Capability |
Use hardware profile |
Optimal bitrate selected |
50 |
Bitrate Switch on Energy Saving Mode |
Reduce bitrate to save power |
Efficient streaming |
Segmented Media Delivery - Testcases
Segmented Media Delivery |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Segment Download Success |
Download a media segment |
Segment is downloaded successfully |
2 |
Segment Download Failure |
Simulate segment fetch failure |
Player retries or switches quality |
3 |
Segment Retry Mechanism |
Retry failed segment |
Segment is re-fetched successfully |
4 |
Segment Timeout Handling |
Simulate timeout |
Player handles gracefully |
5 |
Segment Order Validation |
Ensure segments are in order |
Playback is smooth |
6 |
Segment Numbering Check |
Validate segment numbering |
Player fetches correct sequence |
7 |
Segment Duration Consistency |
Check uniform segment duration |
Playback timing is accurate |
8 |
Segment Timestamp Accuracy |
Validate timestamps |
Sync with playback timeline |
9 |
Segment Alignment |
Ensure audio/video segments align |
A/V sync is maintained |
10 |
Segment Switching |
Switch between segment qualities |
Seamless transition |
11 |
Segment Buffering |
Buffer multiple segments |
Playback is uninterrupted |
12 |
Segment Prefetching |
Prefetch upcoming segments |
Reduced buffering |
13 |
Segment Caching |
Cache segments locally |
Faster access on replays |
14 |
Segment Decryption |
Decrypt encrypted segments |
Content plays correctly |
15 |
Segment Integrity Check |
Validate segment hash/checksum |
Segment is not corrupted |
16 |
Segment Size Variation |
Handle different segment sizes |
Player adapts buffer accordingly |
17 |
Segment Format Support |
Support for .mp4, .webm, etc. |
Player plays all formats |
18 |
Segment MIME Type Validation |
Validate MIME types |
Correct content type handled |
19 |
Segment Download Over HTTP |
Fetch segment via HTTP |
Segment is delivered |
20 |
Segment Download Over HTTPS |
Fetch segment via HTTPS |
Secure delivery confirmed |
21 |
Segment Download Over HTTP/2 |
Use HTTP/2 for delivery |
Improved performance |
22 |
Segment Download Over QUIC |
Use QUIC protocol |
Low-latency delivery |
23 |
Segment Delivery via CDN |
Fetch from CDN edge |
Fast and reliable delivery |
24 |
Segment Delivery via Proxy |
Fetch through proxy |
Segment arrives correctly |
25 |
Segment Delivery with NAT |
Fetch behind NAT |
Segment is received |
26 |
Segment Delivery with Firewall |
Fetch through firewall |
Segment not blocked |
27 |
Segment Delivery with VPN |
Fetch over VPN |
Segment arrives securely |
28 |
Segment Delivery with Packet Loss |
Simulate packet loss |
Player recovers |
29 |
Segment Delivery with Jitter |
Simulate jitter |
Playback remains smooth |
30 |
Segment Delivery with Delay |
Simulate network delay |
Player buffers accordingly |
31 |
Segment Delivery with Bandwidth Drop |
Reduce bandwidth |
Player switches to lower quality |
32 |
Segment Delivery with Bandwidth Spike |
Increase bandwidth |
Player switches to higher quality |
33 |
Segment Delivery with Live Stream |
Deliver live segments |
Real-time playback |
34 |
Segment Delivery with VOD |
Deliver on-demand segments |
Playback is smooth |
35 |
Segment Delivery with Seek |
Seek to new position |
Correct segment fetched |
36 |
Segment Delivery with Pause/Resume |
Pause and resume playback |
Segment delivery resumes |
37 |
Segment Delivery with Rewind |
Rewind playback |
Previous segments fetched |
38 |
Segment Delivery with Fast Forward |
Fast forward playback |
Future segments fetched |
39 |
Segment Delivery with Manifest Update |
Update MPD |
New segments fetched correctly |
40 |
Segment Delivery with Segment Template |
Use template URLs |
Segments resolved correctly |
41 |
Segment Delivery with SegmentTimeline |
Use timeline-based addressing |
Accurate segment fetching |
42 |
Segment Delivery with Byte Ranges |
Use byte-range requests |
Partial segments fetched |
43 |
Segment Delivery with Multiple Periods |
Handle multiple periods in MPD |
Segments fetched per period |
44 |
Segment Delivery with Multiple Adaptation Sets |
Handle multiple tracks |
Segments fetched per track |
45 |
Segment Delivery with Language Tracks |
Fetch segments for selected language |
Correct audio played |
46 |
Segment Delivery with Subtitles |
Fetch subtitle segments |
Subtitles displayed correctly |
47 |
Segment Delivery with DRM |
Fetch and decrypt protected segments |
Playback authorized |
48 |
Segment Delivery with Analytics |
Track segment fetch events |
Analytics logs updated |
49 |
Segment Delivery with Logging |
Log segment delivery |
Logs show correct sequence |
50 |
Segment Delivery with Error Recovery |
Recover from segment error |
Playback continues smoothly |
MPD - Testcases
MPD (Manifest) File |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Valid MPD Parsing |
Load a valid MPD file |
MPD is parsed without errors |
2 |
Invalid MPD Format |
Load malformed MPD |
Error is raised or fallback triggered |
3 |
MPD with Single Period |
MPD contains one period |
Player loads and plays content |
4 |
MPD with Multiple Periods |
MPD contains multiple periods |
Player switches periods correctly |
5 |
MPD with BaseURL |
MPD includes BaseURL |
Segments are resolved correctly |
6 |
MPD with SegmentTemplate |
Use SegmentTemplate for URLs |
Segments are fetched correctly |
7 |
MPD with SegmentList |
Use SegmentList for segments |
Player loads listed segments |
8 |
MPD with SegmentTimeline |
Use SegmentTimeline for timing |
Playback is synchronized |
9 |
MPD with AdaptationSet |
MPD includes multiple AdaptationSets |
Player selects appropriate stream |
10 |
MPD with Representations |
MPD includes multiple Representations |
Player switches between qualities |
11 |
MPD with Audio and Video |
MPD includes both media types |
A/V are synchronized |
12 |
MPD with Subtitles |
MPD includes subtitle track |
Subtitles are displayed |
13 |
MPD with Language Attribute |
MPD specifies language |
Correct language is selected |
14 |
MPD with Role Attribute |
MPD defines roles (main, alternate) |
Player prioritizes main role |
15 |
MPD with ContentProtection |
MPD includes DRM info |
Player requests license |
16 |
MPD with InbandEventStream |
MPD includes event stream |
Events are triggered during playback |
17 |
MPD with Profiles Attribute |
MPD specifies DASH profile |
Player validates compatibility |
18 |
MPD with minBufferTime |
MPD defines buffer time |
Player buffers accordingly |
19 |
MPD with availabilityStartTime |
MPD defines live start time |
Live playback starts correctly |
20 |
MPD with timeShiftBufferDepth |
MPD defines DVR window |
Player allows seeking within window |
21 |
MPD with suggestedPresentationDelay |
MPD defines live delay |
Player delays playback accordingly |
22 |
MPD with maxSegmentDuration |
MPD defines max segment length |
Player handles segment timing |
23 |
MPD with UTCTiming |
MPD includes UTC timing |
Player synchronizes clock |
24 |
MPD with Location Element |
MPD includes alternate MPD URL |
Player can switch to backup |
25 |
MPD with ServiceDescription |
MPD includes service metadata |
Player reads and applies settings |
26 |
MPD with EssentialProperty |
MPD includes custom properties |
Player interprets or ignores safely |
27 |
MPD with SupplementalProperty |
MPD includes supplemental info |
Player logs or uses metadata |
28 |
MPD with Label Element |
MPD includes labels |
Player displays track names |
29 |
MPD with Accessibility Element |
MPD includes accessibility info |
Player enables accessibility features |
30 |
MPD with TrickMode |
MPD supports trick play |
Fast forward/rewind works |
31 |
MPD with Switching Set |
MPD allows seamless switching |
Player switches without rebuffering |
32 |
MPD with SegmentAlignment |
MPD ensures segment alignment |
A/V sync is maintained |
33 |
MPD with BitstreamSwitching |
MPD supports switching |
Player adapts bitrate smoothly |
34 |
MPD with Initialization Segment |
MPD defines init segment |
Player loads init segment first |
35 |
MPD with Index Segment |
MPD includes index segment |
Player uses index for seeking |
36 |
MPD with Byte Ranges |
MPD uses byte ranges |
Player fetches partial segments |
37 |
MPD with Multiple BaseURLs |
MPD includes fallback URLs |
Player switches on failure |
38 |
MPD with DRM Key Rotation |
MPD supports key rotation |
Player updates keys during playback |
39 |
MPD with Low Latency Mode |
MPD configured for low latency |
Playback is near real-time |
40 |
MPD with Live Edge |
MPD defines live edge |
Player starts at correct point |
41 |
MPD with Segment Availability Range |
MPD defines segment window |
Player fetches only available segments |
42 |
MPD with Update Period |
MPD refreshes periodically |
Player reloads MPD as needed |
43 |
MPD with HTTP Redirect |
MPD URL redirects |
Player follows redirect |
44 |
MPD with Invalid URL |
MPD points to bad URL |
Player handles error gracefully |
45 |
MPD with Missing Segment |
Segment listed but not available |
Player retries or switches quality |
46 |
MPD with Custom Namespace |
MPD uses custom XML namespace |
Player ignores or logs it |
47 |
MPD with Comments |
MPD includes XML comments |
Player ignores comments |
48 |
MPD with UTF-8 Encoding |
MPD encoded in UTF-8 |
Player parses correctly |
49 |
MPD with Invalid XML |
MPD is not well-formed |
Player throws parsing error |
50 |
MPD with Schema Validation |
MPD validated against schema |
MPD passes validation |
Codec Agnostic - Testcases
Codec Agnostic |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
MPD with AVC Codec |
Use H.264/AVC codec |
Player plays stream successfully |
2 |
MPD with HEVC Codec |
Use H.265/HEVC codec |
Player plays stream successfully |
3 |
MPD with VP9 Codec |
Use VP9 codec |
Player plays stream successfully |
4 |
MPD with AV1 Codec |
Use AV1 codec |
Player plays stream successfully |
5 |
MPD with MPEG-2 Codec |
Use MPEG-2 codec |
Player plays stream successfully |
6 |
MPD with Theora Codec |
Use Theora codec |
Player plays stream successfully |
7 |
MPD with AAC Audio |
Use AAC audio codec |
Audio plays correctly |
8 |
MPD with Opus Audio |
Use Opus audio codec |
Audio plays correctly |
9 |
MPD with MP3 Audio |
Use MP3 audio codec |
Audio plays correctly |
10 |
MPD with FLAC Audio |
Use FLAC audio codec |
Audio plays correctly |
11 |
MPD with Multiple Codecs |
Include multiple codec types |
Player selects compatible codec |
12 |
Codec Switching Mid-Session |
Switch codec during playback |
Playback continues seamlessly |
13 |
Codec Fallback |
Fallback to supported codec |
Playback continues |
14 |
Codec Negotiation |
Player selects best codec |
Optimal codec used |
15 |
Codec Mismatch Handling |
Unsupported codec in MPD |
Player skips or shows error |
16 |
Codec with DRM |
Use codec with encryption |
Playback authorized and smooth |
17 |
Codec with Subtitles |
Use codec with subtitle track |
Subtitles display correctly |
18 |
Codec with Multi-Period MPD |
Use codec across periods |
Playback transitions smoothly |
19 |
Codec with Multi-AdaptationSet |
Use codec in multiple sets |
Player switches correctly |
20 |
Codec with Trick Mode |
Use codec with trick play |
Fast forward/rewind works |
21 |
Codec with Audio-Only Stream |
Use codec in audio-only |
Audio plays without video |
22 |
Codec with Video-Only Stream |
Use codec in video-only |
Video plays without audio |
23 |
Codec with Live Streaming |
Use codec in live DASH |
Real-time playback |
24 |
Codec with VOD |
Use codec in on-demand |
Playback is smooth |
25 |
Codec with SegmentTemplate |
Use codec with templated segments |
Segments fetched and decoded |
26 |
Codec with SegmentList |
Use codec with listed segments |
Playback works |
27 |
Codec with SegmentTimeline |
Use codec with timeline |
Playback is synchronized |
28 |
Codec with Byte Range |
Use codec with byte-range addressing |
Segments fetched correctly |
29 |
Codec with Initialization Segment |
Use codec with init segment |
Initialization successful |
30 |
Codec with Encryption Key Rotation |
Use codec with rotating keys |
Playback remains secure |
31 |
Codec with Adaptive Bitrate |
Use codec in ABR scenario |
Bitrate switches smoothly |
32 |
Codec with Resolution Change |
Use codec across resolutions |
Playback adapts |
33 |
Codec with Frame Rate Change |
Use codec across frame rates |
Playback remains smooth |
34 |
Codec with Audio Language Tracks |
Use codec with multiple languages |
Correct language selected |
35 |
Codec with Accessibility Features |
Use codec with accessibility metadata |
Features enabled |
36 |
Codec with Custom Metadata |
Use codec with custom tags |
Metadata parsed or ignored |
37 |
Codec with DASH Profile |
Use codec in different profiles |
Profile compatibility maintained |
38 |
Codec with Browser Playback |
Test codec in browser |
Playback successful |
39 |
Codec with Native App |
Test codec in native player |
Playback successful |
40 |
Codec with Mobile Device |
Test codec on mobile |
Playback smooth |
41 |
Codec with Smart TV |
Test codec on smart TV |
Playback successful |
42 |
Codec with Game Console |
Test codec on console |
Playback successful |
43 |
Codec with IoT Device |
Test codec on embedded device |
Playback functional |
44 |
Codec with WebAssembly Player |
Use codec in WASM-based player |
Playback works |
45 |
Codec with Hardware Acceleration |
Use codec with GPU decoding |
Efficient playback |
46 |
Codec with Software Decoding |
Use codec with CPU decoding |
Playback functional |
47 |
Codec with Analytics Integration |
Track codec usage |
Analytics logs correct codec |
48 |
Codec with Logging |
Log codec info during playback |
Logs show correct codec |
49 |
Codec with Error Recovery |
Recover from codec error |
Playback resumes |
50 |
Codec with Compliance Check |
Validate codec against standards |
Codec passes validation |
Transport over HTTP - Testcases
Transport over HTTP |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
HTTP GET Segment |
Fetch media segment via HTTP GET |
Segment is downloaded successfully |
2 |
HTTP GET MPD |
Fetch MPD file via HTTP GET |
MPD is retrieved successfully |
3 |
HTTP 200 OK Response |
Server returns 200 for segment |
Segment is played |
4 |
HTTP 404 Segment Not Found |
Segment URL returns 404 |
Player retries or switches quality |
5 |
HTTP 403 Forbidden |
Access denied to segment |
Player handles error gracefully |
6 |
HTTP 500 Server Error |
Simulate server error |
Player retries or switches source |
7 |
HTTP Redirect (302) |
Segment URL redirects |
Player follows redirect |
8 |
HTTP Range Request |
Request partial segment |
Server returns correct byte range |
9 |
HTTP Caching Headers |
Use ETag/Last-Modified |
Player uses cached segments |
10 |
HTTP Chunked Transfer |
Use chunked encoding |
Player buffers and plays correctly |
11 |
HTTP Persistent Connection |
Reuse TCP connection |
Reduced latency observed |
12 |
HTTP with CDN |
Fetch segments from CDN |
Fast and reliable delivery |
13 |
HTTP with Proxy |
Fetch segments via proxy |
Segments delivered correctly |
14 |
HTTP with NAT |
Fetch segments behind NAT |
Playback works |
15 |
HTTP with Firewall |
Fetch segments through firewall |
Segments not blocked |
16 |
HTTP with VPN |
Fetch segments over VPN |
Secure and uninterrupted playback |
17 |
HTTP with TLS (HTTPS) |
Use secure HTTP |
Segments delivered securely |
18 |
HTTP with Authentication |
Use basic auth for segment access |
Player authenticates successfully |
19 |
HTTP with Token Auth |
Use bearer token |
Player accesses protected content |
20 |
HTTP with Expired Token |
Use expired token |
Access denied, player retries |
21 |
HTTP with Bandwidth Throttling |
Simulate limited bandwidth |
Player adapts bitrate |
22 |
HTTP with Latency |
Simulate high latency |
Player buffers accordingly |
23 |
HTTP with Packet Loss |
Simulate packet loss |
Player retries segment |
24 |
HTTP with Jitter |
Simulate jitter |
Playback remains smooth |
25 |
HTTP with Segment Prefetch |
Prefetch next segments |
Reduced buffering |
26 |
HTTP with Segment Retry |
Retry failed segment fetch |
Playback resumes |
27 |
HTTP with Segment Timeout |
Simulate timeout |
Player handles gracefully |
28 |
HTTP with Segment Caching |
Cache segments locally |
Faster replays |
29 |
HTTP with Segment Encryption |
Encrypted segments over HTTP |
Decrypted and played |
30 |
HTTP with DRM License |
Fetch license over HTTP |
License acquired successfully |
31 |
HTTP with MPD Update |
Reload MPD over HTTP |
New segments fetched |
32 |
HTTP with Live MPD |
Fetch live MPD updates |
Playback stays in sync |
33 |
HTTP with VOD MPD |
Fetch static MPD |
Playback starts and ends correctly |
34 |
HTTP with SegmentTemplate |
Use templated URLs |
Segments resolved and fetched |
35 |
HTTP with SegmentList |
Use listed URLs |
Segments fetched in order |
36 |
HTTP with SegmentTimeline |
Use timeline-based segments |
Playback is synchronized |
37 |
HTTP with Byte Range |
Use byte-range requests |
Partial segments fetched |
38 |
HTTP with Multiple BaseURLs |
Use fallback URLs |
Player switches on failure |
39 |
HTTP with Custom Headers |
Send custom HTTP headers |
Server responds correctly |
40 |
HTTP with User-Agent Header |
Send specific User-Agent |
Server responds appropriately |
41 |
HTTP with Referer Header |
Send Referer info |
Server validates request |
42 |
HTTP with CORS |
Cross-origin segment fetch |
Segments delivered without error |
43 |
HTTP with DASH.js Player |
Use DASH.js over HTTP |
Playback works |
44 |
HTTP with Shaka Player |
Use Shaka Player over HTTP |
Playback works |
45 |
HTTP with Native HTML5 |
Use native browser support |
Playback works |
46 |
HTTP with Mobile Browser |
Test on mobile browser |
Segments fetched and played |
47 |
HTTP with Desktop Browser |
Test on desktop browser |
Playback is smooth |
48 |
HTTP with Smart TV |
Test on smart TV |
Segments fetched and played |
49 |
HTTP with IoT Device |
Test on embedded device |
Playback functional |
50 |
HTTP with Analytics |
Track HTTP segment fetches |
Logs show correct delivery info |
Multi-Device Support, - Testcases
Multi-Device Support |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Device Sync Start |
Start playback on Device A, continue on Device B |
Playback resumes at same timestamp |
2 |
Resolution Adaptation |
Switch from 4K TV to mobile |
Resolution adapts to device capability |
3 |
Audio Sync |
Switch audio device mid-playback |
Audio remains in sync with video |
4 |
Subtitle Continuity |
Enable subtitles on Device A, continue on Device B |
Subtitles remain enabled |
5 |
DRM Continuity |
Switch device with DRM-protected content |
Playback continues with valid license |
6 |
Bandwidth Adaptation |
Switch from Wi-Fi to mobile data |
Stream adapts to new bandwidth |
7 |
Device Capability Detection |
Start on low-end device |
Stream adjusts to device specs |
8 |
Multi-Device Pause/Resume |
Pause on Device A, resume on Device B |
Playback resumes from paused point |
9 |
Multi-Device Login |
Login on multiple devices |
Session syncs across devices |
10 |
Playback History Sync |
Watch history updates across devices |
History reflects latest activity |
11 |
Buffer Management |
Switch device mid-buffer |
Buffer resumes without reloading |
12 |
Codec Compatibility |
Switch to device with different codec support |
Compatible stream selected |
13 |
Audio Track Sync |
Change audio track on Device A |
Same track plays on Device B |
14 |
Language Preference Sync |
Set language on one device |
Language preference retained |
15 |
Adaptive Bitrate |
Vary network speed on different devices |
Bitrate adjusts accordingly |
16 |
Device Logout |
Logout from one device |
Session ends on that device only |
17 |
Concurrent Streams |
Play on two devices simultaneously |
Both streams play independently |
18 |
Device Limit Enforcement |
Exceed max device limit |
New device denied access |
19 |
Stream Quality Sync |
Change quality on Device A |
Same quality on Device B |
20 |
Playback Speed Sync |
Change speed on one device |
Speed retained on other device |
21 |
Device-Specific Settings |
Set brightness on Device A |
Not applied to Device B |
22 |
Stream Restart |
Restart stream on new device |
Starts from beginning |
23 |
Resume After Reboot |
Reboot device during playback |
Playback resumes at last point |
24 |
Device Switch Notification |
Switch device during playback |
Notification shown (if enabled) |
25 |
Stream Encryption |
Encrypted stream on all devices |
Decryption works on all |
26 |
Offline Sync |
Downloaded content on Device A |
Not available on Device B |
27 |
Playback Analytics |
Track playback on multiple devices |
Analytics reflect all activity |
28 |
Device-Specific Errors |
Error on one device |
Does not affect others |
29 |
Stream Token Expiry |
Token expires mid-switch |
Playback fails with error |
30 |
Multi-Device Bookmarking |
Bookmark on Device A |
Bookmark visible on Device B |
31 |
Parental Control Sync |
Enable on one device |
Applies to all devices |
32 |
Stream Delay |
Compare delay across devices |
Minimal delay difference |
33 |
Stream Format Compatibility |
Switch to device with limited format support |
Compatible format selected |
34 |
Device Timezone Handling |
Switch across timezones |
Playback timestamp remains accurate |
35 |
Stream Restart After Crash |
App crash on Device A |
Resume on Device B |
36 |
Stream Metadata Sync |
Metadata updates on one device |
Reflected on others |
37 |
Device-Specific UI |
UI adapts to device type |
Optimized layout shown |
38 |
Stream Session Expiry |
Session timeout on one device |
Requires re-authentication |
39 |
Stream Sync Delay |
Measure sync delay between devices |
Delay within acceptable range |
40 |
Multi-Device Notifications |
Notification on one device |
Not shown on others unless configured |
41 |
Stream Quality Degradation |
Poor network on one device |
Quality drops only on that device |
42 |
Stream Resume After Network Loss |
Network loss on Device A |
Resume on Device B |
43 |
Stream Sync with Casting |
Cast from Device A to TV |
Syncs playback state |
44 |
Stream Sync with Browser |
Switch from app to browser |
Playback resumes correctly |
45 |
Stream Sync with Smart TV |
Switch from phone to Smart TV |
Playback continues seamlessly |
46 |
Stream Sync with Tablet |
Switch from phone to tablet |
Playback resumes at same point |
47 |
Stream Sync with Game Console |
Switch to console |
Stream adapts to console specs |
48 |
Stream Sync with Wearables |
Attempt playback on wearable |
Playback not supported or limited |
49 |
Stream Sync with Car Display |
Switch to car infotainment |
Stream adapts to screen and bandwidth |
50 |
Stream Sync with VR Device |
Switch to VR headset |
360 or VR-compatible stream selected |
DRM Integration - Testcases
DRM Integration |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
DRM License Request |
Request license from DRM server |
License is successfully retrieved |
2 |
DRM License Expiry |
License expires during playback |
Playback stops with error |
3 |
DRM License Renewal |
Renew license before expiry |
Playback continues without interruption |
4 |
Invalid License |
Use invalid license |
Playback fails with error |
5 |
License Revocation |
Revoke license remotely |
Playback stops immediately |
6 |
Device Binding |
License tied to specific device |
Playback fails on unauthorized device |
7 |
Offline Playback |
Play DRM content offline |
Playback allowed if license is valid |
8 |
License Acquisition Retry |
Retry on license fetch failure |
License acquired on retry |
9 |
License Server Unavailable |
Server down during request |
Playback fails gracefully |
10 |
License Caching |
Cache license locally |
Playback works without re-fetching |
11 |
Multi-DRM Support |
Support Widevine, PlayReady, FairPlay |
Correct DRM used per platform |
12 |
Key Rotation |
Rotate encryption keys during playback |
Playback continues without issue |
13 |
Encrypted Segment Playback |
Play encrypted video segments |
Decryption successful |
14 |
DRM Initialization Data |
Parse PSSH box correctly |
DRM session initialized |
15 |
Playback Without DRM |
Try to play encrypted content without DRM |
Playback fails |
16 |
License Duration Enforcement |
License valid for limited time |
Playback stops after duration |
17 |
Concurrent Stream Restriction |
Limit number of concurrent streams |
Excess streams denied |
18 |
Region Restriction |
License valid in specific region |
Playback blocked outside region |
19 |
Device Limit |
Limit number of devices per user |
New device denied if limit reached |
20 |
License Format Validation |
Validate license format |
Invalid format rejected |
21 |
Secure Key Storage |
Store keys securely on device |
Keys not accessible to user |
22 |
Tamper Detection |
Detect modified license |
Playback blocked |
23 |
License Logging |
Log license requests |
Logs contain correct metadata |
24 |
License Response Parsing |
Parse license response correctly |
Keys extracted successfully |
25 |
Playback Resume with DRM |
Resume playback after pause |
DRM session resumes correctly |
26 |
DRM Session Timeout |
Session expires during playback |
Playback stops |
27 |
DRM Session Reuse |
Reuse session for multiple segments |
No new license request needed |
28 |
DRM Error Handling |
Handle license errors gracefully |
User shown appropriate message |
29 |
DRM with Adaptive Bitrate |
Switch bitrates during playback |
DRM keys work across bitrates |
30 |
DRM with Subtitles |
Play encrypted video with subtitles |
Subtitles display correctly |
31 |
DRM with Audio Tracks |
Switch audio tracks |
DRM keys apply to all tracks |
32 |
DRM with Live Streaming |
Play live encrypted stream |
Playback works in real-time |
33 |
DRM with VOD |
Play encrypted VOD content |
Playback successful |
34 |
DRM with Downloaded Content |
Download and play offline |
DRM license validated |
35 |
DRM with Casting |
Cast DRM content to TV |
DRM license supports casting |
36 |
DRM with Screen Recording |
Attempt screen recording |
Recording blocked |
37 |
DRM with Screen Mirroring |
Attempt mirroring |
Playback blocked or degraded |
38 |
DRM with Browser Playback |
Play in browser |
Browser supports DRM module |
39 |
DRM with Mobile App |
Play in mobile app |
DRM integrated in app |
40 |
DRM with Smart TV |
Play on Smart TV |
DRM supported by TV |
41 |
DRM with Game Console |
Play on console |
DRM license validated |
42 |
DRM with VR Device |
Play on VR headset |
DRM keys work in VR |
43 |
DRM with Multiple Profiles |
Switch user profiles |
License tied to correct profile |
44 |
DRM with User Logout |
Logout during playback |
Playback stops |
45 |
DRM with Network Change |
Switch from Wi-Fi to mobile |
DRM session persists |
46 |
DRM with App Update |
Update app during playback |
DRM session remains valid |
47 |
DRM with OS Update |
Update OS |
DRM functionality remains intact |
48 |
DRM with Time Manipulation |
Change system time |
Playback blocked if time invalid |
49 |
DRM with VPN |
Use VPN to change region |
Playback blocked if region-restricted |
50 |
DRM with Analytics |
Track DRM playback events |
Analytics reflect DRM usage |
Live and On-Demand Support - Testcases
Live and On-Demand Support |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Live Stream Start |
Start a live stream |
Playback begins with minimal delay |
2 |
On-Demand Start |
Start an on-demand stream |
Playback starts from beginning |
3 |
Live Stream Latency |
Measure delay in live stream |
Latency within acceptable range |
4 |
On-Demand Seek |
Seek to a timestamp |
Playback jumps to selected time |
5 |
Live Stream Seek Disabled |
Attempt to seek in live stream |
Seek disabled or limited |
6 |
DVR Window Support |
Seek within DVR window |
Playback allowed within window |
7 |
Live Stream Buffering |
Buffer during live playback |
Playback resumes smoothly |
8 |
On-Demand Buffering |
Buffer during on-demand playback |
Playback resumes from buffer point |
9 |
Live Stream Rewind |
Rewind within DVR window |
Playback rewinds correctly |
10 |
On-Demand Rewind |
Rewind to earlier point |
Playback rewinds correctly |
11 |
Live Stream Pause |
Pause live stream |
Playback resumes from paused point |
12 |
On-Demand Pause |
Pause on-demand stream |
Playback resumes from paused point |
13 |
Live Stream Resume |
Resume after pause |
Playback resumes at current live point |
14 |
On-Demand Resume |
Resume after pause |
Playback resumes from paused point |
15 |
Live Stream Catch-Up |
Jump to live edge |
Playback jumps to latest segment |
16 |
On-Demand Playback Speed |
Change playback speed |
Speed changes accordingly |
17 |
Live Stream Playback Speed |
Attempt to change speed |
Speed change may be restricted |
18 |
Live Stream Segment Availability |
Check segment availability |
Only recent segments available |
19 |
On-Demand Segment Availability |
All segments available |
Full content accessible |
20 |
Live Stream Manifest Update |
Manifest updates dynamically |
New segments appear in manifest |
21 |
On-Demand Manifest Static |
Manifest remains static |
No updates during playback |
22 |
Live Stream Time Shift |
Shift playback within window |
Playback adjusts accordingly |
23 |
On-Demand Time Shift |
Seek to any time |
Playback adjusts accordingly |
24 |
Live Stream End |
End live stream |
Playback stops gracefully |
25 |
On-Demand End |
Reach end of content |
Playback stops or loops |
26 |
Live Stream Restart |
Restart live stream |
Playback starts from live edge |
27 |
On-Demand Restart |
Restart from beginning |
Playback starts from 0:00 |
28 |
Live Stream Network Loss |
Disconnect during live |
Playback resumes at live edge |
29 |
On-Demand Network Loss |
Disconnect during playback |
Playback resumes from last point |
30 |
Live Stream Adaptive Bitrate |
Vary network speed |
Bitrate adjusts dynamically |
31 |
On-Demand Adaptive Bitrate |
Vary network speed |
Bitrate adjusts dynamically |
32 |
Live Stream Audio Sync |
Check audio-video sync |
Audio remains in sync |
33 |
On-Demand Audio Sync |
Check audio-video sync |
Audio remains in sync |
34 |
Live Stream Subtitle Sync |
Enable subtitles |
Subtitles sync with live video |
35 |
On-Demand Subtitle Sync |
Enable subtitles |
Subtitles sync with video |
36 |
Live Stream DRM |
Play encrypted live stream |
DRM license validated |
37 |
On-Demand DRM |
Play encrypted on-demand stream |
DRM license validated |
38 |
Live Stream Analytics |
Track live playback |
Analytics reflect live metrics |
39 |
On-Demand Analytics |
Track on-demand playback |
Analytics reflect full session |
40 |
Live Stream Device Switch |
Switch device mid-stream |
Playback resumes at live edge |
41 |
On-Demand Device Switch |
Switch device mid-stream |
Playback resumes at same point |
42 |
Live Stream CDN Failover |
Failover to backup CDN |
Playback continues seamlessly |
43 |
On-Demand CDN Failover |
Failover to backup CDN |
Playback continues seamlessly |
44 |
Live Stream Time Drift |
Check for clock drift |
Playback remains in sync |
45 |
On-Demand Time Drift |
Check for clock drift |
No impact on playback |
46 |
Live Stream Segment Loss |
Drop a segment |
Playback skips or buffers |
47 |
On-Demand Segment Loss |
Drop a segment |
Playback fails or buffers |
48 |
Live Stream Start Delay |
Delay in stream start |
Playback starts with minimal delay |
49 |
On-Demand Start Delay |
Delay in stream start |
Playback starts quickly |
50 |
Live to VOD Transition |
Convert live to VOD |
On-demand playback available post-event |
Multi-Language and Subtitles - Testcases
Multi-Language and Subtitles |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Default Language Playback |
Play content with default language |
Audio plays in default language |
2 |
Language Selection |
Select a different audio language |
Audio switches to selected language |
3 |
Subtitle Selection |
Enable subtitles in selected language |
Subtitles appear in selected language |
4 |
No Subtitle Option |
Disable subtitles |
No subtitles displayed |
5 |
Multiple Audio Tracks |
Content has multiple audio tracks |
All tracks listed for selection |
6 |
Multiple Subtitle Tracks |
Content has multiple subtitle tracks |
All subtitle options listed |
7 |
Language Preference Save |
Save preferred language |
Language auto-selected next time |
8 |
Subtitle Preference Save |
Save subtitle preference |
Subtitles auto-enabled next time |
9 |
Language Change During Playback |
Switch language mid-playback |
Audio switches without interruption |
10 |
Subtitle Change During Playback |
Switch subtitle mid-playback |
Subtitles update immediately |
11 |
Unsupported Language |
Select unsupported language |
Fallback to default language |
12 |
Subtitle Sync |
Check subtitle timing |
Subtitles sync with audio/video |
13 |
Subtitle Delay |
Introduce delay in subtitles |
Subtitles appear with delay |
14 |
Subtitle Format Support |
Use different subtitle formats (e.g., WebVTT, TTML) |
All formats render correctly |
15 |
Subtitle Styling |
Apply styling to subtitles |
Styles (font, color) applied correctly |
16 |
Subtitle Positioning |
Change subtitle position |
Subtitles repositioned correctly |
17 |
Subtitle Size Adjustment |
Change subtitle font size |
Size changes as expected |
18 |
Subtitle Background |
Enable subtitle background |
Background appears behind text |
19 |
Subtitle Color Customization |
Change subtitle color |
Color changes as configured |
20 |
Subtitle Language Auto-Detect |
Detect system language |
Subtitles auto-set to system language |
21 |
Audio Language Auto-Detect |
Detect system language |
Audio auto-set to system language |
22 |
Subtitle Toggle Shortcut |
Use keyboard shortcut to toggle subtitles |
Subtitles toggle on/off |
23 |
Audio Language Toggle Shortcut |
Use shortcut to switch audio |
Audio switches correctly |
24 |
Subtitle File Missing |
Subtitle file not found |
Error handled gracefully |
25 |
Audio Track Missing |
Audio track not found |
Fallback to default or error shown |
26 |
Subtitle Encoding |
Use different encodings (UTF-8, UTF-16) |
Subtitles render correctly |
27 |
Subtitle Download |
Download subtitles for offline |
Subtitles available offline |
28 |
Subtitle with DRM |
Play DRM-protected content with subtitles |
Subtitles display correctly |
29 |
Audio with DRM |
Play DRM-protected content with alternate audio |
Audio switches correctly |
30 |
Subtitle with Live Stream |
Enable subtitles in live stream |
Subtitles sync with live content |
31 |
Subtitle with On-Demand |
Enable subtitles in VOD |
Subtitles sync with video |
32 |
Subtitle with Adaptive Bitrate |
Switch bitrates during playback |
Subtitles remain consistent |
33 |
Audio with Adaptive Bitrate |
Switch bitrates |
Audio remains consistent |
34 |
Subtitle with Rewind |
Rewind video |
Subtitles rewind accordingly |
35 |
Subtitle with Fast Forward |
Fast forward video |
Subtitles sync correctly |
36 |
Subtitle with Pause/Resume |
Pause and resume playback |
Subtitles resume correctly |
37 |
Subtitle with Casting |
Cast video to another device |
Subtitles appear on cast screen |
38 |
Audio with Casting |
Cast with alternate audio |
Audio plays correctly on cast device |
39 |
Subtitle with Downloaded Content |
Play downloaded content |
Subtitles display offline |
40 |
Audio with Downloaded Content |
Play downloaded content |
Audio track plays offline |
41 |
Subtitle with Screen Rotation |
Rotate screen |
Subtitles reposition correctly |
42 |
Subtitle with Fullscreen Mode |
Enter fullscreen |
Subtitles scale and position correctly |
43 |
Subtitle with Picture-in-Picture |
Enable PiP mode |
Subtitles visible in PiP |
44 |
Subtitle with Accessibility Settings |
Enable accessibility mode |
Subtitles adapt to settings |
45 |
Subtitle with Multi-Device Sync |
Switch devices mid-playback |
Subtitle settings retained |
46 |
Audio with Multi-Device Sync |
Switch devices |
Audio language retained |
47 |
Subtitle with Browser Playback |
Play in browser |
Subtitles render correctly |
48 |
Subtitle with Mobile App |
Play in mobile app |
Subtitles render correctly |
49 |
Subtitle with Smart TV |
Play on Smart TV |
Subtitles render correctly |
50 |
Subtitle with Game Console |
Play on console |
Subtitles render correctly |
Open Standard - Testcases
Open Standard |
|||
---|---|---|---|
S.No |
Test Case |
Description |
Expected Result |
1 |
Open Spec Compliance |
Validate against MPEG-DASH spec |
Stream conforms to standard |
2 |
Cross-Platform Playback |
Play on different OS |
Playback works on all platforms |
3 |
Cross-Browser Support |
Play on Chrome, Firefox, Safari, Edge |
Playback consistent across browsers |
4 |
Open Source Player Support |
Use open-source players (e.g., Shaka, dash.js) |
Playback successful |
5 |
Proprietary Player Support |
Use commercial players |
Playback successful |
6 |
Manifest File Format |
Validate MPD XML structure |
MPD conforms to schema |
7 |
Codec Agnostic |
Use different codecs (H.264, VP9, AV1) |
All codecs supported |
8 |
DRM Agnostic |
Use different DRM systems |
All supported via standard interfaces |
9 |
Segment Format Compatibility |
Use ISO BMFF segments |
Segments play correctly |
10 |
Interoperability with HLS |
Convert DASH to HLS |
Conversion successful |
11 |
Standards-Based Encryption |
Use CENC |
Encryption works across players |
12 |
Standards-Based Subtitles |
Use WebVTT/TTML |
Subtitles render correctly |
13 |
Standards-Based Audio |
Use MPEG audio formats |
Audio plays correctly |
14 |
Adaptive Bitrate Streaming |
Test ABR logic |
Bitrate switches smoothly |
15 |
Multi-Period Support |
Use multiple periods in MPD |
Playback transitions correctly |
16 |
Event Messaging |
Use in-band event streams |
Events trigger correctly |
17 |
Timed Metadata |
Include timed metadata |
Metadata parsed and displayed |
18 |
Profile Compliance |
Validate against DASH-IF profiles |
MPD passes validation |
19 |
Open Tools Compatibility |
Use DASH-IF validator |
MPD passes validation |
20 |
Open Packaging Tools |
Use MP4Box, ffmpeg |
Packaging successful |
21 |
Open Analytics Integration |
Integrate with open analytics tools |
Data collected correctly |
22 |
Open CDN Support |
Use any CDN |
Playback works with standard URLs |
23 |
Open Manifest Parsing |
Parse MPD with open libraries |
Parsing successful |
24 |
Open Playback APIs |
Use MSE/EME APIs |
Playback works via standard APIs |
25 |
Open Source Debugging |
Debug with open tools |
Logs and errors visible |
26 |
Open Documentation |
Reference MPEG-DASH spec |
Implementation matches spec |
27 |
Open Community Support |
Use forums and GitHub |
Issues resolved via community |
28 |
Open Format Logging |
Log in standard formats |
Logs readable and structured |
29 |
Open Testing Frameworks |
Use open test suites |
Tests pass successfully |
30 |
Open Accessibility Support |
Use standard accessibility tags |
Features work with screen readers |
31 |
Open Language Support |
Use standard language tags |
Language switching works |
32 |
Open Manifest Updates |
Use standard update intervals |
Manifest refreshes correctly |
33 |
Open Segment Naming |
Use standard naming conventions |
Segments load correctly |
34 |
Open Error Codes |
Use standard error codes |
Errors are meaningful |
35 |
Open Playback Metrics |
Collect standard QoE metrics |
Metrics available for analysis |
36 |
Open Source Contribution |
Modify open player |
Changes reflected in playback |
37 |
Open Format Conversion |
Convert to/from other formats |
Conversion successful |
38 |
Open Playback Logging |
Log playback events |
Logs follow standard format |
39 |
Open Manifest Validation |
Validate MPD with XML schema |
MPD is valid |
40 |
Open Segment Validation |
Validate segment format |
Segments conform to ISO BMFF |
41 |
Open API Integration |
Integrate with open APIs |
Integration successful |
42 |
Open Playback Control |
Use standard controls (play, pause, seek) |
Controls work as expected |
43 |
Open Source Licensing |
Use open-licensed tools |
No licensing issues |
44 |
Open Format Documentation |
Access public documentation |
Docs match implementation |
45 |
Open Playback Testing |
Use open test vectors |
Playback matches expected output |
46 |
Open Manifest Accessibility |
MPD readable by screen readers |
Accessibility supported |
47 |
Open Format Extensibility |
Extend MPD with custom tags |
Extensions dont break playback |
48 |
Open Format Interchange |
Share MPD across systems |
MPD works across platforms |
49 |
Open Format Versioning |
Use versioned MPD |
Version handled correctly |
50 |
Open Format Compliance Reporting |
Generate compliance report |
Report confirms standard adherence |
Reference links