Git Product home page Git Product logo

dash-srd.js's Introduction

dash-srd.js

dash-srd.js is a DASH player implementing the tiled streaming concept. 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.

The software provided here is a proof of concept and does not reflect the performances of a final end-user product.

Requirements

Currently it works on desktop and mobile devices are not yet supported.

Background

Standardisation

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

Implementation

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

License

Please view the license in the LICENSE.md file.

Deployment

  1. git clone https://github.com/tnomedialab/dash-srd.js
  2. 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.

Development

Source code and dependencies

  1. git clone https://github.com/tnomedialab/dash-srd.js
  2. install nodejs
  3. install grunt
  • 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.

dash-srd.js's People

Contributors

edrthomas avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.