GithubHelp home page GithubHelp logo

dash-player's People

Contributors

lbonanni avatar valotvince avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dash-player's Issues

Roadmap

Idea for the LFT Fridays, the creation of our own dash player. The goals are:

  • Have a better understanding of how we read our streams in HTML5
  • Get a better overview of the complexity of dash.js
  • Understand how MediaSource works

Steps

⚠️ We will focus only on a recent Chrome to build our player
⚠️ All the features should have their tests (think of TDD ?) 🤣
⚠️ Declare events and trigger them on a event bus so any integrator can listen to the different events

The very first implementation 📖

  • At first, parse a Dash Manifest (XML), and get the very first idea of how the Manifest is formatted and what can be extracted Structure of the Manifest
  • Create a MediaSource through a video object, read the first video fragment of the Manifest
  • Read video multiple fragments consecutively (events FRAGMENT_LOADED, FRAGMENT_CHANGED)
  • Build a buffer size ahead (30 seconds but should be configurable)
  • Prune buffer that is 30 seconds behind the edge (should be configurable)
  • Apply the previous steps to audio fragments

Let's playground that ⏯

  • Build a minimalistic playground, that takes a source in a input and loads it.
  • Add some controls on the player (play / pause / sound)

ℹ️ For the other capabilities of our player, it would be nice to add some control into the playground

Ok you're nice, but the stream quality is 💩even if I have a good connection

  • Add a static capability to choose another bitrate (event BITRATE_CHANGED)
  • Add a dynamic switching bitrate, depending on how fast we've downloaded the latest fragments

I want to protect my content, ok ? ☠️

  • Implement a DRM reader
  • Decode the fragments on the fly (event FRAGMENT_DECODED)

My media works fine, protected and a good quality, but i want more... i want live streaming ! 📺

  • Read the first fragments of a live manifest
  • Reload the manifest each x seconds to get the latest fragments information, and keep streaming the live ahead (event MANIFEST_LOADED)
  • Add possibility to choose our delay comparing to the live edge

I'm an international video provider, you have to implement multiple audio tracks 🇺🇸

  • Add capability to change video/audio tracks (event TRACK_CHANGED)
  • When switching tracks, invalid the current buffer so the switch (audio/video) is immediate

Your player is fine, but it doesn't get me any money on the live 💵

  • Implement the period switching (just bumping to the next available) on a live streaming (event PERIOD_SWITCHED)
  • Listen to events of the Manifest (event MANIFEST_EVENT)

Documentation

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.