Skip to content

jdhayford/deja

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deja

Deja Picture

What is Deja?

Deja is a chrome extension (link to chrome store) that lets you create "replays" from live streams (specifically HLS streams). While watching a stream, you can use the Deja chrome extension to start a new "session" for that stream. At any point after, using that session you can create a replay of the last ~30 seconds of the stream either through the chrome extension, or also by pulling up the Deja web application for that session (which means this is possible from a browser window or even a mobile device).

Why?

I was mainly motivated to create Deja because I enjoyed watching sports streams and wanted to be able to watch highlights again and save them for later. You can always rewind the playback to watch a part again, but that really interferes with the viewing experience and you can't save that.

My ideal use of deja is starting the deja session on my laptop browser, hooking it up to my tv, and then pulling up the web app on my phone for when I want to make replays.

How does it work?

Deja Diagram

There are 3 main parts to Deja:

  • Chrome Extension: A simple Chrome extension with a lightweight React UI to allow users to begin sessions and request replays. Upon starting a session, the chrome extension begins observing network activity (it is only able to see the metadata i.e. request url, headers, etc). It starts a session with the API and begins reporting these requests so that, when requested, the API can construct a replay from the stream. Note: It was important in designing the architecture that the extension was built as un-invasive as possible, i.e. it would have been easier to simply override the XHR requests and evaluate the response bodies.

  • API: Written in Go, this API is used to create sessions, record stream requests and build replays. When a replay is requested, it evaluates the past X .m3u8 manifests for the stream, requests the segments and uses FFMPEG to construct a replay. This replay is stored in S3 and a link is sent to clients.

  • Web App: (Hosted at deja.video) A straightforward (somewhat mobile friendly) React web app that when given a session name, allows you to view the replays made so far as well as create new ones.

About

Chrome extension + Go backend for generating and saving replays from live .m3u8 streams

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published