Giter Club home page Giter Club logo

fireplace's Introduction

Fireplace

Fireplace is an easy to use media playback service that lets you upload video content and create watchparties which can be enjoyed with friends and family anywhere around the world!

It's complete with user authentication, real time playback and voice chat. All you need to do is invite your friends and have a good time at Fireplace :)

Here's a link to the working site.

And here's a link to the server repo.

How it works

  1. When a user signs up, Fireplace sends a magic link using Supabase's authentication service.
  2. All uploaded videos are stored in AWS S3.
  3. Playback controls are synced in real time with the help of a websocket server.
  4. Voice chat is enabled using Dolby's APIs. The voice chat features spatial audio, allowing multiple participants to be heard clearly even when speaking at the same time.

Vercel has been used to host the next.js app and AWS to deploy the websocket server.

The process

The motivation for creating Fireplace came from wanting to watch videos with my friends in a seamless manner. The pandemic made it even more necessary to find new ways to connect with friends and relatives. Dolby provided a great opportunity in making this possible.

From the get go I wanted to use websocket to sync the video streams, but implementing it was a challenge on it's own. Voice chat with spatial audio added a whole new interactive dimension.

What's next?

Build the World hackathon has been fun and I'm excited to submit this version of Fireplace. However, I have plans to further improve the website.

  1. Fireplace currently supports 5 participants at a watchparty. This can be increased in the future.
  2. Improve the custom video player.
  3. Improve website performance.

fireplace's People

Contributors

0xdebabrata avatar dinosoupy avatar

Stargazers

Erdem avatar Gaëtan H avatar

Watchers

 avatar

fireplace's Issues

Glow up

  • Updated styles
  • File upload status

Support HLS streaming

  • Create a pipeline for converting user-uploaded videos to appropriate HLS format for streaming.
  • Support HLS streaming in the frontend video player.

Benefits:

  • Ensures all user-uploaded files will be playable on Fireplace. Currently only .mp4 and some other formats play well in the browser, while other formats fail to work.
  • Video resolution will automatically change depending on user's internet bandwidth. Ensures smoother playback and less sync issues where user A buffers but playback continues for user B

Collapse chat window

  • Allow users to collapse chat window (currently it can only be resized)
  • When a new message comes in and the window is collapsed, show a notification (could be a simple dot).

Support manual subtitle file uploads

  • Once a video has been uploaded, allow users to upload its subtitles
  • Associate the uploaded subtitle file with the relevant video (look into linking the records in Supabase)
  • Delete both video and subtitle file (S3) and associated records from Supabase when the video is deleted by the user.

Notes

  • Normally subtitle files are available as .srt files but browser players only support .vtt files. #5

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.