Table of Contents

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

ISO Base Media File Format

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

Note

DashServer is not available as a standalone server. It operates as part of the VAST.Network.StreamingServer infrastructure and is instantiated by the StreamingServer automatically when enabled.

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),
};
Parameter Default Description
MpegDashPath "/dash" HTTP path for DASH requests
TimeshiftBufferDuration 30 seconds Duration of timeshift buffer for live
InactivityTimeout 100 seconds Client timeout before disconnection
MaxSegmentWaitingTime 10 seconds Maximum wait for segment arrival

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.*

Container Formats

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