dash-srd.js builds on the dash.js DASH player and extends it by the Spatial Relationship Description (SRD) feature to allow for playback of tiled video. It allows the user to freely navigate in a high resolution video panorama while downloading just what is needed to render the user's viewpoint.
This is a fork of the original implementation by @tnomedialab, updated to work with the current development branch (version 3.0.0) of dash.js by the @Dash-Industry-Forum.
Currently it works on desktop and mobile devices are not yet supported.
The dash-srd.js player is a reference DASH player implementation allowing the user to navigate in a video panorama. It relies on the Spatial Relationship Description (SRD) feature recently published in MPEG-DASH part 1, ISO/IEC 23009-1. SRD allows to describe the relationship in space of independent videos contained in AdapatationSets. More information on the standard and its application can be found in the SRD MPEG white paper
The dash-srd.js player allows the playback of spatially segmented
content provided in up to 2 resolution layers in addition to the
non-tiled content, also called "fallback" layer. As specified by
MPEG DASH, the content is described in a manifest file called the Media
Presentation Description whose file extension is commonly .mpd
.
The player is designed as wrapper around dash.js version 1.5.0. It determines the spatial segments needed for the current user's viewpoint. From the original MPD, it only retains the selected spatial segments and generates as many MPD as selected Representations. Then, the player feeds each individual MPD as an object to a dash.js instance. Therefore, dash.js is slightly modified to be able to handle an MPD object as input instead of an MPD URL.
In addition, the dash-srd.js player assumes two things. The first assumption is that the first AdaptationSet of the MPD contains the legacy content which is also the fallback layer of the dash-srd.js player. Having such legacy content enables backward compatibility of the MPD regarding non-SRD aware DASH players. And the second is that if the fallbacklayer has non-multiplexed audio, the audio will be in the second AdaptationSet of the manifest file.
Please view the license in the LICENSE.md file.
- git clone https://github.com/tnomedialab/dash-srd.js
- Install an HTTP server instance
Whichever webserver that serves your needs, Apache, NGINX or just Python SimpleHTTPServer.
Python SimpleHTTPServer is easy to use for testing environments. Just go to your local repository directory with a command line tool and type python –m SimpleHTTPServer (or python 3 –m http.server when on Python 3). This will host the dash-srd.js player on http://localhost:8000/public/
Alternatively, host dash.all.js and dash-srd.min.js from the build
directory on a different webserver and make sure that they are included
in your HTML file with the appropriate URL. See index.html
from the public
directory as an example. The scripts are enclosed between the
<head>
and </head>
tags. The dash.js script is modified to support
manifest files as objects. Notice that there are two external libraries,
jQuery and Popcorn.js. Those can be downloaded from the CDN URLs as in
the index.html
example.
The div’s and tables of the index.html
file are the DOM elements
of the player. Their id’s and classes are used within the
dash-srd.min.js script, so they can only be changed if you modify
the element id references in the Initializer.js
script as well.
- npm install -g grunt-cli
The source files are contained in the src
directory. They consist
of the player files, in subdirectory srdplayer
, and utilities for
generic tasks in JavaScript. All the necessary source files are
included in Gruntfile.js
, such that you can build dash-srd.min.js
with the grunt command line. Note that you must use the command in the
dash-srd directory and grunt must be correctly installed.
If all went well (Grunt will tell you), the dash-srd.min.js script
can be found in the build
directory.