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.
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 |
|
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.
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.
This project ist contains a frontend and a backend with their own technology stack
- React
- Ant Design
- TanStack Router
- Go
- Node 20
- Go 1.22
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))
);