The nice thing about standards is that you have so many to choose from. — Andrew S. Tanenbaum
SASH is a new standard for adaptive HTTP streaming. SASH is inspired by MPEG DASH and Apple HLS, and is intended to complement them.
Its aims are to provide a simpler, JSON based manifest format which learns from DASH and HLS's manifest design, but delivers something JavaScript and Media Source Extensions friendly.
SASH is designed to be owned and developed by the community, and not be limited by patent pools or usage restrictions.
- Be 100% JSON.
- Be friendly to both Media Source Extensions (MSE) and native clients.
- Use the good concepts from DASH and HLS. Skip the bad parts.
- Have one way to do things.
- Eliminate ambiguity. All client behavior should be defined. Client implementations should never guess.
- Usable and readable. Don't make developers think.
- Be codec and container agnostic.
- Be compatible with most HLS and DASH media that you've already created.
Here's a simple SASH manifest, with 1 audio track and 1 video track, using fragmented MP4 segments.
{
"sash_version" : 2,
"presentation_duration": 300,
"video" : [
{
"mime_type" : "video/mp4",
"segment_template" : {
"duration": 1.960,
"init": "http://example.com/big-buck-bunny/$rendition$/init.m4f",
"media": "http://example.com/big-buck-bunny/$rendition$/segment$number$.m4f",
"start_number": 0,
"end_number" : 154
},
"renditions" : {
"video-540p-800k" : {
"bandwidth": 800000,
"codecs": "avc1.4d401e",
"height": 480,
"width": 852
}
}
}
],
"audio": [
{
"mime_type" : "video/mp4",
"segment_template": {
"duration": 1.996,
"init": "http://example.com/big-buck-bunny/$rendition$/init.m4f",
"media": "http://example.com/big-buck-bunny/$rendition$/segment$number$.m4f",
"start_number": 0,
"end_number": 154
},
"renditions": {
"audio-64k" : {
"bandwidth": 64000,
"codecs": "mp4a.40.2"
}
}
}
]
}
Also see:
- Separate audio and video (A common real world scenario, compatible with ISO DASH Media)
- A prototype implementation of a segment-timeline approach, featuring discontinuities
I returned to this project after a break. The changes I want to make are documented here.
How does SASH compare to HLS and DASH?
Always.
See also https://xkcd.com/927 and the election of Antipope Alexander V.
No.