Skip to content

SalzstangeSalamiBrief/videos-with-subtitle-player

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Videos with subtitle player

This software utilizes http streaming to stream multimedia files to a client. Such files could be video or audio files with or without subtitle tracks.

Contributors

Changelog

Date Description
07.01.2024 - 30.03.2024 Initialize Project by adding a front- and backend
30.03.2024 Add support for videos
01.04.2024 Replace ReactRouter with TanstackRouter
20.04.2024 Add tests
24.04.2024 - 27.04.2024 Refine router and path calculation in the backend
01.04.2024 Test refinement
03.08.2024 - 230.08.2024 Restructure information architecture
23.09.2024 Add JSONServer as alternative for the real backend while developing
30.09.2024 Add image (thumbnail) support to the backend and display thumbnails in the frontend
01.10.2024
  • Create a Github project and move todos from the readme to the project
  • Fix an issue that created a new id for each item on page refresh

Motivation

The goal of this project is to learn go and provide a solution to my problem, that I am missing a program to display multimedia files with separate subtitle tracks.

How the streaming works

To enable the user to navigate through content in the used media player, the idea of partial content (206) is used: If a file just gets flushed to the client, then the client has to wait to receive the whole file, before playing it and enabling the user to navigate through it. Instead of that, the client requests a byte range of the file and gets these bytes served. Before the buffer of the client runs out, a request with the next byte range is sent.

Used technologies

This project ist contains a frontend and a backend with their own technology stack

Frontend

  • React
  • Ant Design
  • TanStack Router

Backend

  • Go

Technological Requirements

  • Node 20
  • Go 1.22

Configuration

How to develop

How to debug the player

const player = document.querySelector("video");
const events = [
  "abort",
  "canplay",
  "canplaythrough",
  "durationchange",
  "emptied",
  "encrypted",
  "ended",
  "error",
  "interruptbegin",
  "interruptend",
  "loadeddata",
  "loadedmetadata",
  "loadstart",
  "mozaudioavailable",
  "pause",
  "play",
  "playing",
  "progress",
  "ratechange",
  "seeked",
  "seeking",
  "stalled",
  "suspend",
  "timeupdate",
  "volumechange",
  "waiting",
];
events.forEach((a) =>
  player.addEventListener(a, (e) => console.log(e.type, e))
);

How to build

How to test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published