Dockerized web app for easily making clips from your library of movies using .srt subtitle files.
- Docker and Docker Compose installed
Using Docker Compose:
-
Copy the sample config and edit it for your setup:
cp .env.sample .env
Set at least
SECRET_KEY(a long random string). Optionally set theS3_*values to enable uploads. -
Copy the sample compose file and set your volume paths:
cp docker-compose-sample.yml docker-compose.yml
Point the
volumesat your host directories. -
Start the container:
docker compose up -d
The app will be accessible at
http://[server IP]:5000.
All configuration lives in .env (loaded via env_file). Key values:
MOVIES_DIR,TV_SHOWS_DIR,OUTPUT_DIR— paths inside the container; map your host dirs to these in the composevolumesSECRET_KEY— required, set to a long random stringS3_*— enable S3 upload (leave blank to disable);S3_LINK_FORMATisbasicorpresigned(usepresignedfor S3-compatible stores without anonymous read access, e.g. Garage)EXCLUDED_FOLDERS— comma-separated folder names to skip when scanning (e.g.@eaDiron Synology)FFMPEG_LOG_ENABLED,STARTUP_SCAN_LOG_ENABLED— set tofalseto reduce console noise
The home page should show a list of your movie files if they've been mapped correctly. The app has been programmed to search recursively through the /movies folder for the common extensions listed in the VIDEO_EXTENSIONS environment variable. Any folders listed in the EXCLUDED_FOLDERS environment variable are skipped during the scan, which is useful for hiding NAS metadata folders (e.g. @eaDir on Synology) that show up in your library. Select a valid movie to proceed to the subtitle page. For TV shows, select the show, then a season, then an episode, then its subtitle file.
Movies that don't contain a matching .srt file in the same movie folder will be colored greyed out, and present a red "subtitle file not found" tag. The .srt file name must match the movie file name, not including the extension or language signifier. (e.g. "en.srt" or "fr.srt") I have a library that was set up for Plex, and so I built this app around that type of library organization.
This will display the .srt file for the movie. Search for the quote to navigate directly to that part of the .srt file, or scroll to it.
- The first click sets the start point of the clip.
- The second click sets the end point of the clip
- Click the clear button, to clear your markers Click proceed to continue to the output settings page.
If you need to add some seconds of time flanking the clip to capture a certain moment outside the .srt timestamp, this can be done by adding some seconds to the padding field. Scale factor allows you to scale the resolution of the output clip down from the native file resolution. Format allows you to select:
- mp4 for audio/video
- gif for video only
- mp3 for audio only
- wav for audio only (uncompressed)
Advanced options (CRF, preset, audio bitrate) and audio-stream selection (for multi-audio files) are also available.
Click Generate to create the clip. For 4k files this may take a minute depending on how large the clip is
This should show you a live preview of your video as well as the ability to download it, Upload to S3, modify the settings (deletes the existing clip), or cancel back to the movie page (Also deletes the existing clip).
Previously generated clips are listed under History, where you can re-preview, download, upload to S3, or delete them.
- Add GPU encoding support for final clip output (preview encoding is already GPU-accelerated)
- Interface for managing clips stored in your S3 bucket.