client | ||
common | ||
docs/images | ||
server | ||
worker | ||
.editorconfig | ||
.gitignore | ||
.gitmodules | ||
docker-compose.yml | ||
README.md |
Transmute
Distributed Video Transcoding
Table of Contents
About
Transmute provides a simple web based tool to manage your video library. Transmute will watch a directory and automatically transcode videos using FFmpeg & hardware acceloration (if available) so that your entire library meets a specified standard. In addition to transcoding, Transmute can also remove undesired audio tracks, subtitles, perform healthchecks & upscale/downscale video.
Why do I care?
- Transcoding
MPEG-2/MPEG-4
video toh.264/h.265
can reduce file size by 50-90% - A more extreme measure is downscaling
4K
to1080p
to reduce size by a further 75% - Stripping out unused audio tracks & subtitles can result in more savings
- Some devices or players will be unable to play specific formats
- If you use a self-hosted streaming service, your host will have to transcode videos on the fly when a device doesn't support the original format/resolution leading to choppy playback, transcoding your library ahead of time can avoid this in most cases
Why should I use this over __________?
Transmute's goal is to make the transcoding process as fast & simple as possible. Most transcoders provide hundreds of settings requiring some expertise to properly setup. With Transmute you simply specify what your video files should look like & it will transcode your videos as lossless-ly as possible using multiple computers to make short work of large libraries.
How does it work?
After choosing your desired settings & creating a new library in the WebUI, the server will begin scanning videos to collect metadata. If this metadata doesn't match your settings or a healthcheck is required, the server will queue a job.
Once a worker is available, it will request a job from the server & complete it using FFmpeg.
Built With
Setup
Production
Prerequisites
Instructions
- Download the example compose file on your server:
curl -o transmute.yml https://gitlab.zakscode.com/zakscode/transmute/transmute/-/raw/main/docker-compose.yml
- Read the Configuration Guide & edit the compose file accordingly
- Run the compose file:
- Using Docker Compose:
docker compose -f transmute.yml up
- Using Docker Swarm:
docker stack deploy transmute -c transmute.yml
- Using Docker Compose:
Development
Prerequisites
Instructions
- Clone this project:
git clone
- Pull the submodules:
git submodule update --remote --init
- Checkout the latest:
git submodule foreach git switch develop
- Install dependencies:
git submodule foreach npm i
- Link common:
- Link common to npm:
cd common && npm link
- Link common to client (re-run after every
npm install
):cd ../client && npm link @transmute/common
- Link common to server (re-run after every
npm install
):cd ../server && npm link @transmute/common
- Link common to worker (re-run after every
npm install
):cd ../worker && npm link @transmute/common
- Link common to npm:
- Start each project as needed:
- Start common:
cd ../common && npm run watch
- Start client:
cd ../client && npm run start
- Start server:
cd ../server && npm run start
- Start worker:
cd ../worker && npm run start
- Start common:
License
Copyright © 2023 Zakary Timson | Available under MIT Licensing
See the license for more information.