VAST.DASH Library
The VAST.DASH library provides a complete MPEG-DASH (Dynamic Adaptive Streaming over HTTP) server implementation for VASTreaming applications. It enables adaptive bitrate streaming with support for live and VOD content, multiple segment delivery methods, and full MPD (Media Presentation Description) manifest generation.
Overview
| Feature |
Description |
| DASH Server |
HTTP-based DASH content delivery |
| Live Streaming |
Dynamic presentations with timeshift buffer |
| VOD Streaming |
Static presentations with segment caching |
| Segment Templates |
URL template-based segment addressing |
| Segment Lists |
Explicit segment URL enumeration |
| Adaptive Bitrate |
Multiple representations per adaptation set |
Requirements
Supported Profiles
| Profile |
URN |
Use Case |
| On-Demand |
urn:mpeg:dash:profile:isoff-on-demand:2011 |
VOD content |
| Live |
urn:mpeg:dash:profile:isoff-live:2011 |
Live streaming |
Architecture
The diagrams below illustrate the media data flow inside the StreamingServer for the MPEG-DASH server.
Live Streams
┌─────────────────────────────────────────────────────────────┐
│ Live Media Source │
│ (Camera, File, Network Stream) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PublishingPoint │
│ /dash/stream1 (Dynamic) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DashServerSink │
│ (Receives media, creates segments, MPD) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DashServer │
│ (HTTP server, client management) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DASH Clients │
│ (Web browsers, media players) │
└─────────────────────────────────────────────────────────────┘
VOD Streams
┌─────────────────────────────────────────────────────────────┐
│ VOD Media Source │
│ (File, Memory Stream) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PublishingPoint │
│ /dash/movie1 (Static) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DashServerSink │
│ (Receives media, creates segments, MPD) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DashServer │
│ (HTTP server, client management) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DASH Clients │
│ (Web browsers, media players) │
└─────────────────────────────────────────────────────────────┘
Server Configuration
Server Parameters
Configure the DASH server using DashServerParameters:
var parameters = new VAST.DASH.DashServerParameters
{
MpegDashPath = "/dash",
TimeshiftBufferDuration = TimeSpan.FromSeconds(30),
InactivityTimeout = TimeSpan.FromSeconds(100),
MaxSegmentWaitingTime = TimeSpan.FromSeconds(10),
};
Live Streaming
Live streaming uses dynamic presentations where content becomes available in real-time.
Features
| Feature |
Support |
| Dynamic MPD |
Yes |
| Timeshift Buffer |
Configurable duration |
| MPD Updates |
MinUpdatePeriod supported |
| Segment Timeline |
Variable segment durations |
| Low Latency |
Configurable presentation delay |
VOD Streaming
VOD (Video on Demand) uses static presentations where all content is available immediately.
Features
| Feature |
Support |
| Static MPD |
Yes |
| Segment Caching |
Pre-cache support |
| Duration |
Total media duration |
| Seeking |
Full seek support |
MPD Structure
MPD (Media Presentation Description)
├── Period
│ ├── AdaptationSet (Video)
│ │ ├── Representation (1080p, 5Mbps)
│ │ ├── Representation (720p, 3Mbps)
│ │ └── Representation (480p, 1.5Mbps)
│ └── AdaptationSet (Audio)
│ ├── Representation (AAC, 128kbps)
│ └── Representation (AAC, 64kbps)
└── Period (next chapter/ad)
Supported Content Types
Video Codecs
| Codec |
MIME Type |
Codec String |
| H.264/AVC |
video/mp4 |
avc1.* |
| H.265/HEVC |
video/mp4 |
hvc1., hev1. |
Audio Codecs
| Codec |
MIME Type |
Codec String |
| AAC |
audio/mp4 |
mp4a.40.* |
| Format |
Support |
| ISO BMFF (fMP4) |
Yes |
Troubleshooting
Common Issues
| Issue |
Cause |
Solution |
| MPD not updating |
MinUpdatePeriod too long |
Reduce MinUpdatePeriod value |
| Segments unavailable |
Timeshift buffer too short |
Increase TimeshiftBufferDuration |
| Client timeout |
Inactivity |
Adjust InactivityTimeout |
| Playback stutter |
Buffer too small |
Increase MinBufferTime |
| Seek fails |
Missing SAP |
Ensure keyframe alignment |
Client Compatibility
Test with these DASH players:
- dash.js (reference player)
See Also