CMAF (fMP4) over HTTP (DASH, HLS7, HSS)
Segmented streaming in CMAF (fMP4) format over HTTP
Pushing/Recording
The following push targets are matched by this output:
cmaf://*
cmafs://*
Dependency on other protocol(s)
Dependency | Description |
---|---|
HTTP(S) | Segmented streaming in CMAF (fMP4) format over HTTP |
Playing CMAF (fMP4) over HTTP (DASH, HLS7, HSS) from MistServer
Method | Type | URL |
---|---|---|
DASH | dash/video/mp4 | http(s)://HOST :PORT /cmaf/STREAMNAME /index.mpd |
HLS (CMAF) | html5/application/vnd.apple.mpegurl;version=7 | http(s)://HOST :PORT /cmaf/STREAMNAME /index.m3u8 |
MS Smooth Streaming | html5/application/vnd.ms-sstr+xml | http(s)://HOST :PORT /cmaf/STREAMNAME /Manifest |
CMAF Optional configurations
Option | Description | Type | Default | API | Commandline |
---|---|---|---|---|---|
Prepend path for chunks | Chunks will be served from this path. This also disables sessions IDs for chunks. | String | chunkpath | --chunkpath | |
debug | The debug level at which messages need to be printed. | debug | Inherited from parent process | debug | --debug |
Default track sorting | What tracks are selected first when no specific track selector is used for playback. | = Default (last added for live, first added for VoD) bps_lth = Bit rate, low to high bps_htl = Bit rate, high to low id_lth = Track ID, low to high id_htl = Track ID, high to low res_lth = Resolution, low to high res_htl = Resolution, high to low | default_track_sorting | --default_track_sorting | |
Live playlist limit | Maximum number of parts in live playlists. (0 = infinite) | Number (unsigned integer) | 0 | listlimit | --list-limit |
Merge sessions | If enabled, merges together all views from a single user into a single combined session. If disabled, each view (main playlist request) is a separate session. | Flag | Unset | mergesessions | --mergesessions |
Send whole segments | Disables chunked transfer encoding, forcing per-segment buffering. Reduces performance significantly, but increases compatibility somewhat. | Flag | Unset | nonchunked | --nonchunked |
Username | Username to drop privileges to - default if unprovided means do not drop privileges | String | root | username | --username |
CMAF Push parameters
Option | Description | Type | Default | API | Commandline |
---|---|---|---|---|---|
Append to file | If set to any value, will (if possible) append to an existing file, rather than overwriting it | Boolean | Unset | append | undefined |
Audio track(s) | Override which audio tracks of the stream should be selected | string | Unset | audio | undefined |
Duration of push | How much media time to push, in seconds. Internally overrides "recstop" | Number (signed integer) | Unset | duration | undefined |
Playlist path (relative to segments) | If set, will write a m3u8 playlist file for the segments to the given path (relative from the first segment path). When this parameter is used, at least one of the variables $segmentCounter or $currentMediaTime must be part of the segment path (to keep segments from overwriting each other). The "Split interval" parameter will default to 60 seconds when using this option. | string | Unset | m3u8 | undefined |
Playlist max entries | When writing a playlist, delete oldest segment entries once this entry count has been reached (and, if possible, also delete said segments themselves). When set to 0 or left empty, does not delete. | Number (signed integer) | Unset | maxEntries | undefined |
Max buffer duration for GOP count wait | When waiting for GOPs on the main track, give up when this much data is available in the main track buffer | Number (signed integer) | 5s, or 120s when using a non-default GOP count | maxwaittrackms | undefined |
Push delay | Ensures the stream is always delayed by at least this many seconds. Internally overrides the "realtime" and "start" parameters | Number (signed integer) | Unset | pushdelay | undefined |
Playback rate | Multiplier for the playback speed rate, or 0 to not limit | Number (signed integer) | 1 | rate | undefined |
Don't speed up output | If set to any value, removes the rate override to unlimited normally applied to push outputs | Boolean | Unset | realtime | undefined |
Media timestamp to start from | What internal media timestamp to start from | Number (signed integer) | Unset | recstart | undefined |
Unix timestamp to start from | What unix timestamp to start from | unixtime | Unset | recstartunix | undefined |
Media timestamp to stop at | What internal media timestamp to stop at | Number (signed integer) | Unset | recstop | undefined |
Unix timestamp to stop at | What unix timestamp to stop at | unixtime | Unset | recstopunix | undefined |
Split interval | Performs a gapless restart of the recording every this many seconds. Always aligns to the next keyframe after this duration, to ensure each recording is fully playable. When set to zero (the default) will not split at all. | Number (signed integer) | Unset | split | undefined |
Media timestamp to start from | What internal media timestamp to start from | Number (signed integer) | Unset | start | undefined |
Unix timestamp to start from | What unix timestamp to start from | unixtime | Unset | startunix | undefined |
Media timestamp to stop at | What internal media timestamp to stop at | Number (signed integer) | Unset | stop | undefined |
Unix timestamp to stop at | What unix timestamp to stop at | unixtime | Unset | stopunix | undefined |
Subtitle track(s) | Override which subtitle tracks of the stream should be selected | string | Unset | subtitle | undefined |
Playlist target age | When writing a playlist, delete segment entries that are more than this many seconds old from the playlist (and, if possible, also delete said segments themselves). When set to 0 or left empty, does not delete. | Number (signed integer) | Unset | targetAge | undefined |
Unmask tracks | If set to any value, removes any applied track masking before selecting tracks, acting as if no mask was applied at all | Boolean | Unset | unmask | undefined |
Video track(s) | Override which video tracks of the stream should be selected | string | Unset | video | undefined |
Wait for GOP count | Before starting, wait until this number of GOPs is available in the main selected track | Number (signed integer) | 2 | waittrackcount | undefined |