Coder Social home page Coder Social logo

player-server's People

Contributors

anbsky avatar kodxana avatar lyoshenka avatar nikooo777 avatar tiger5226 avatar tzarebczan avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

player-server's Issues

Trigger file view on APIs when playback or download requested

Right now, the app triggers a file view event on internal APIs.

On top of this, we also want to track any playback events from RSS feeds or any other sources who access content directly.

We still want to track authenticated calls through the apps, so we'll need to pass a param with these player requests/download links so you know not to call it again.

Add CORS headers to transcoded content

See slack convo /

2. HTTP Headers
The M3U8 playlists and the TS segments must have proper CORS headers. These are known-good headers for the M3U8 file (with the Content-Length and associated headers of course being altered as needed):
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Origin: *
Connection: close
Content-Length: 844
Content-Range: bytes bytes 0-843/844
Content-Type: application/vnd.apple.mpegurl
These are known-good headers for the TS files:
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Origin: *
Connection: close
Content-Length: 3286804
Content-Range: bytes 0-3286803/3286804
Content-Type: video/mp2t

2.1. Configuring .htaccess
If you are using Apache to serve the files, add this to the .htaccess file:
<FilesMatch "\.(m3u8|ts)$">
  Header set Access-Control-Allow-Origin "*"
  Header set Access-Control-Allow-Methods "GET, OPTIONS"
</FilesMatch>

Implement a first-level chunk cache

For first-level chunk caching, i.e. saving blobs locally for immediately serving them to the client in subsequent requests, we need to implement a simple FIFO cache to complement our more sophisticated second-level longer term cache.

Possible caching of old claim version

If a new claim version is uploaded before query cache invalidation timeout, it's possible for the old claim version to be retrieved and subsequently cached in downstream CDN.

Enhance metrics collection

Things to watch:

  • General HTTP response statuses
  • TTFB
  • Blob retrieval errors/successes/timings

A good place to start is to look at existing metrics, which are declared in internal/metrics.

Collect video quality report

It would be useful to collect metrics which would allow us to assess our clients network capacity, such as:

  • client location
  • assigned player
  • average bandwidth to the assigned player

Improve running streams metrics

Right now it works by calling metrics.StreamsRunning at the start of binary stream request, which is not suitable for HLS as each HLS stream is guaranteed to incur a multitude of requests.

One way to do it could be maintaining a list of clients that request HLS fragments, based on stream URL, and drop them off after a certain timeout.

Player not invalidating streams when transcoded fragments go missing

Player not invalidating streams when transcoded fragments go missing (i.e. after stream storage eviction). Entrire streams should be invalidated if requesting any of the fragments returns a 404.

One possible scenario is master playlist being requested on one player and other parts of the stream from another.

Handle broken streams / 0 size blobs

We narrowed down and tracked an issue where certain players/reflectors would end up with a broken blob, causing streams to die. Deleting the blobs on the player and source reflector fixed the issue.

How do we identify and delete automatically? Or prevent from happening as it's writing them.

LICENSE

The license file is missing

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.