This is an app for uploading videos and processing them into 480p, 720p, and 1080p. Once uploaded, you can watch them in a custom-made player and embed them into another website as an iframe. system architecture

System Architecture:

  1. Videos are uploaded with the app using a password token.
  2. Raw video is uploaded to the Google Cloud Storage (GCP) bucket via multipart upload.
  3. GCP upload triggers Google Pub/Sub, pushing a notification to the transcoding server.
  4. FFmpeg generates thumbnails with all set qualities.
  5. FFmpeg transcodes video into all set qualities.
  6. The app consumes content via streaming.

Features:

  • Custom-made player
  • Switching between video resolutions: 480p, 720p, and 1080p
  • Thumbnails on hover or scrubbing over the timeline
  • Embedded video player support

Technologies:

  • App: vanilla Next.js, MongoDB
  • Video processing: Node.js (Express.js), FFmpeg, MongoDB
  • Google Cloud Storage and Pub/Sub
  • Deployed on Vercel and Railway