Web app to generate video clips from videos on their media server (Plex, Jellyfin, Kodi, etc.)
1.5K
See README.md at https://github.com/paveyry/mediaserver-clipper for more information
This application written in Rust serves a web application that allows users to extract clips from videos in their media server (Plex, Jellyfin, etc.).
All environment variables have a default and are optional, but setting these allows you to customize the behaviour of the app.
APP_NAME: defines the name of the app on the webpage. Default is Media Server Clipper.OUTPUT_PATH: defines the directory in which the app will store the clips. Default is the output directory where the app is started from (/app/output in docker container).PUBLIC_LINK_PREFIX: defines a different base URL to the clips directory that will be used when clicking the Share button for a clip.
This is especially useful if you want to protect the MediaServer Clipper instance behind a htpassword but wish to have a public static file server to share the clips with people without giving your credentials (see docker-compose example below). Default is to link to the clip hosted by the Media Server Clipper (so the share and link buttons will do the same thing).MAX_CLIP_DURATION: defines the maximum allowed duration (in seconds) of the clips. Default is 600 (10 minutes).MAX_QUEUE_SIZE: number of jobs in queue after which the Clipper will reject new clip jobs. This does not count finished clips, only pending ones. Default is 4.SEARCH_DIRS: list (comma-separated) of paths in which the search engine should be indexing files. If empty or not set, the search engine is disabled and the search field does not appear in the app. Default is empty. Example: SEARCH_DIRS=/media,/personal/videos,/jellyfin/mediaSEARCH_FILE_EXTS: list (comma-separated) of file extensions (without including the dot) that should be indexed by the search engine. If empty or not set, all files will be indexed. Default is empty (no filtering). Example: SEARCH_FILE_EXT=mp4,mkv,avi,movDocker is the recommended approach to run this application. Use this command to run the image (this exposes it on port 9987):
docker run -d --name clipper -p 9987:8000 -v ./media:/media -v ./clips:/app/output paveyry/mediaserver-clipper:latest
PUBLIC_LINK_PREFIX is not set)plex:
#[...]
volumes:
- ./media:/media
clipper:
image: paveyry/mediaserver-clipper:latest
ports:
- 9987:8000
environment:
- SEARCH_DIRS=/media
volumes:
- ./media:/media # mount it the same way as in plex/jellyfin
- ./clips:/app/output
PUBLIC_LINK_PREFIX is set)plex:
#[...]
volumes:
- ./media:/media
clipper: # This can be protected by a htpassword
image: paveyry/mediaserver-clipper:latest
ports:
- 9987:8000
environment:
- SEARCH_DIRS=/media
- PUBLIC_LINK_PREFIX=https://yourdomain.tld:9988 # Share links wil link to static_clips
volumes:
- ./media:/media
- ./clips:/app/output
public_clips: # This has read-only access so it can be safely exposed without auth
image: nginx
ports:
- 9988:80 # this is https://yourdomain.tld:9988 linked in PUBLIC_LINK_PREFIX
volumes:
- ./clips:/usr/share/nginx/html:ro
Note that the download and link buttons will still link to the mediaserverclipper url, only the share button use the URL from PUBLIC_LINK_PREFIX (the static_clips nginx instance here)
Content type
Image
Digest
sha256:4458e6e15…
Size
57.2 MB
Last updated
over 1 year ago
docker pull paveyry/mediaserver-clipper