Mux as a front- and backend for your media library written in Go (Golang).
Features
Crawl files and index them using a movie / TV show database
Live transmuxing to web compatible video and audio formats
Auto deletion of old transmuxed files
Image resizing and compressing and responsive image in frontend
Auto playing trailer for newest media on frontpage
Multi directory support
API enpoints to get raw data in JSON format
Current development
Remove some CSS
Recommender
Indexer: Handle watcher events (add extension check on watch events, maybe use regex)
Feature Ideas / Todo
Config: Add config defaults
Config: Add duration parser (e.g. 10m23s)
Indexer: Check HTTP Code and MIME type when downloading images [Done]
Indexer: If one image fails all images will be retried. Only retry the failed one [Done]
Indexer: Add DownloadPath to image which contaisn the download url to the file. Use Name to ACTUALLY hold the final path. This is empty if image could not be downloaded.
Indexer: Check what happens when a file gets copied (ftp) and the watcher gets triggered. What happens if we ffprobe and extract subtitles from an incomplete file.
Frontend: Add player state manager
Apollo: Add content aware resizer
If one step fails (more than 3 times) still continue in the sequence (This ensures the media gets saved even when incomplete)
Rework / Tidy up logging / error handling
Do all TODOs
Parts of mux
Core
Indexer: The indexer scans the provided media directories and fetches meta data & images for the found media files which will get saved to the database. The indexer is a multithreaded worker-based consumer.
Server: The server handles API, UI and Authentication request. It is based on Echo.
Transcoder: The transcoder handles the transcoding process of source files into a web streamable format (mp4/aac).
Database: The primary database interface.
Additional services
Util: Util provides useful utility functions across all services.
Cleaner: The cleaner cleans transcoded files.
Apollo: Apollo handles all image manipulation processes like resizing and saving files in different formats.
Recommender: The recommender handles the recommendations / personalization of the video feed (WIP).