media_manager

A self-hosted web app that downloads, converts and compresses media, then cleans up after itself.

RustAxumTypeScriptReactffmpegDocker

Project overview

media_manager bundles three tools in one container: downloading video or audio from YouTube and the other sites yt-dlp supports, transcoding uploads with ffmpeg, and compressing files to a target size. Size-targeted video compression picks a resolution and frame rate the target bitrate can actually support, then re-encodes if the result is still too large. There are no accounts and no database; every file is transient and is deleted automatically after a retention window.

What it does

Download and convert

  • Video or audio downloads via yt-dlp, up to 4K
  • Transcoding between formats such as MKV, MP4, MP3 and OGG

Compress to a target size

  • Resolution and frame rate chosen to fit the target bitrate
  • Image compression and merging of separate audio tracks

Self-hosted and transient

  • One container with an in-memory job queue and real progress
  • Files deleted automatically after the retention window

Technologies & implementation

Technology stack

  • Rust · Axum
  • TypeScript · React · Vite
  • yt-dlp · ffmpeg · ffprobe
  • Docker · GitHub Container Registry
  • GitHub Actions CI