diff --git a/README.md b/README.md index fb8258d..4d38f52 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,14 @@ No npm packages. No Python. No config files to edit by hand — just a browser, --- +## Screenshots + +![Discarr — main UI](docs/screenshots/01-main.png) + +![Discarr — title mapping](docs/screenshots/03-title-mapping.png) + +--- + ## Features - **Disc scanning** — detects `VIDEO_TS`, `BDMV`, multi-disc, and ISO structures automatically diff --git a/docs/config.md b/docs/config.md index b2b7e2c..003d363 100644 --- a/docs/config.md +++ b/docs/config.md @@ -49,8 +49,8 @@ HANDBRAKE_PRESET=H.265 MKV 1080p30 When set, Discarr sends encode jobs to a remote host over SSH instead of running them locally. ```bash -SSH_TRANSCODE_HOST=strahl -SSH_TRANSCODE_USER=alan +SSH_TRANSCODE_HOST=encode-box +SSH_TRANSCODE_USER=mediauser SSH_TRANSCODE_MEDIA_ROOT=/media # Optional: override SSH key path (defaults to ~/.ssh/id_rsa) SSH_TRANSCODE_KEY=~/.ssh/id_ed25519 diff --git a/docs/index.md b/docs/index.md index 370097a..165dcb7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,6 +6,12 @@ Discarr is a self-hosted web UI that bridges disc ripping (VIDEO_TS / BDMV / ISO --- +## Screenshots + +![Discarr main UI — scan source and encode history](screenshots/01-main.png) + +![Title mapping — map disc titles to Sonarr episodes](screenshots/03-title-mapping.png) + ## How it works ``` diff --git a/docs/quickstart.md b/docs/quickstart.md index 59d9db9..68e1ccc 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -50,12 +50,18 @@ Open **http://localhost:8603**. ## 4. Scan a disc +![Discarr scanning a disc — layout detection in progress](screenshots/02-scanning.png) + + 1. Paste the path to a disc directory or ISO (e.g. `/media/disc/VIDEO_TS`) into the **Path** field 2. Click **Scan** 3. Discarr lists the disc titles with duration and chapter count ## 5. Map titles to arr items +![Title mapping — disc titles on the left, Sonarr/Radarr search on the right](screenshots/03-title-mapping.png) + + For each title: 1. Choose **TV (Sonarr)** or **Movie (Radarr)** diff --git a/docs/screenshots/01-main.png b/docs/screenshots/01-main.png new file mode 100644 index 0000000..7b008f3 Binary files /dev/null and b/docs/screenshots/01-main.png differ diff --git a/docs/screenshots/02-scanning.png b/docs/screenshots/02-scanning.png new file mode 100644 index 0000000..28ac92a Binary files /dev/null and b/docs/screenshots/02-scanning.png differ diff --git a/docs/screenshots/03-title-mapping.png b/docs/screenshots/03-title-mapping.png new file mode 100644 index 0000000..5ab0ea2 Binary files /dev/null and b/docs/screenshots/03-title-mapping.png differ diff --git a/docs/screenshots/04-mobile.png b/docs/screenshots/04-mobile.png new file mode 100644 index 0000000..a7d05ed Binary files /dev/null and b/docs/screenshots/04-mobile.png differ diff --git a/docs/transcoders/ffmpeg.md b/docs/transcoders/ffmpeg.md index 63abbc0..ec950b7 100644 --- a/docs/transcoders/ffmpeg.md +++ b/docs/transcoders/ffmpeg.md @@ -39,11 +39,67 @@ FFMPEG_ARGS=-c:v libx265 -crf 22 -preset medium -c:a copy -map 0 | 22–24 | High quality | Standard library | | 26–28 | Good quality | Space-constrained | -## Checking ffmpeg capabilities +## Hardware acceleration + +Hardware encoding is significantly faster than software (`libx265`) but requires a supported GPU and the right ffmpeg build. + +### NVIDIA NVENC + +Most distro-packaged ffmpeg builds include NVENC support. Requires the NVIDIA driver (no CUDA toolkit needed at runtime). + +```bash +# H.265 via NVENC +FFMPEG_ARGS=-c:v hevc_nvenc -preset p4 -cq 22 -c:a aac -b:a 192k + +# Verify NVENC is available +ffmpeg -encoders | grep nvenc +``` + +### Intel QSV (Quick Sync Video) + +!!! warning "Custom ffmpeg build required" + Most distro-packaged ffmpeg builds **do not** include QSV support — it requires `--enable-libmfx` (legacy) or `--enable-libvpl` + `--enable-qsv` (oneVPL, Intel 11th gen+) at compile time. + + **Easiest option:** use `jellyfin-ffmpeg`, which ships QSV-enabled builds for Ubuntu/Debian: + + ```bash + # Add Jellyfin repo and install jellyfin-ffmpeg + curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash + sudo apt install jellyfin-ffmpeg7 + + # Then point Discarr at the jellyfin binary + FFMPEG_BIN=/usr/lib/jellyfin-ffmpeg/ffmpeg + FFPROBE_BIN=/usr/lib/jellyfin-ffmpeg/ffprobe + ``` + + Alternatively, build ffmpeg from source with `--enable-libvpl` (see [FFmpeg compilation guide](https://trac.ffmpeg.org/wiki/CompilationGuide)). + +```bash +# H.265 via QSV (requires QSV-enabled ffmpeg) +FFMPEG_ARGS=-c:v hevc_qsv -global_quality 22 -c:a aac -b:a 192k + +# Verify QSV is available +ffmpeg -encoders | grep qsv +ffmpeg -hwaccels | grep qsv +``` + +### VAAPI (AMD/Intel on Linux) + +Standard distro ffmpeg builds usually include VAAPI. Works on AMD GPUs and Intel integrated graphics. + +```bash +# H.265 via VAAPI +FFMPEG_ARGS=-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' -c:v hevc_vaapi -qp 22 -c:a aac -b:a 192k + +# Verify VAAPI device +ls /dev/dri/renderD* +ffmpeg -hwaccels | grep vaapi +``` + +### Checking what your ffmpeg supports ```bash ffmpeg -codecs | grep hevc ffmpeg -hwaccels +ffmpeg -encoders | grep -E "nvenc|qsv|vaapi|hevc" ``` - -If hardware acceleration is available (NVENC, VAAPI, QSV), you can set it in `FFMPEG_ARGS` for significantly faster encodes. diff --git a/docs/transcoders/handbrake.md b/docs/transcoders/handbrake.md index a397fe3..badc9a2 100644 --- a/docs/transcoders/handbrake.md +++ b/docs/transcoders/handbrake.md @@ -37,7 +37,7 @@ HandBrakeCLI --preset-list Export a preset from HandBrake's GUI, save it to a JSON file, and reference it: ```bash -HANDBRAKE_PRESET_FILE=/home/alan/.config/handbrake/my-preset.json +HANDBRAKE_PRESET_FILE=/home/mediauser/.config/handbrake/my-preset.json HANDBRAKE_PRESET=My Custom Preset ``` diff --git a/docs/transcoders/ssh-workers.md b/docs/transcoders/ssh-workers.md index 7d4686c..dd94616 100644 --- a/docs/transcoders/ssh-workers.md +++ b/docs/transcoders/ssh-workers.md @@ -30,8 +30,8 @@ Arr import ## Configuration ```bash -SSH_TRANSCODE_HOST=strahl # hostname or IP of the encode machine -SSH_TRANSCODE_USER=alan # SSH user on that machine +SSH_TRANSCODE_HOST=encode-box # hostname or IP of the encode machine +SSH_TRANSCODE_USER=mediauser # SSH user on that machine SSH_TRANSCODE_MEDIA_ROOT=/media # path where media is accessible on the remote SSH_TRANSCODE_KEY=~/.ssh/id_ed25519 # optional: SSH key (defaults to ~/.ssh/id_rsa) ``` @@ -47,13 +47,13 @@ ssh-keygen -t ed25519 -C "discarr-transcode" Copy the public key to the remote host: ```bash -ssh-copy-id -i ~/.ssh/id_ed25519.pub alan@strahl +ssh-copy-id -i ~/.ssh/id_ed25519.pub mediauser@encode-box ``` Verify passwordless login: ```bash -ssh -i ~/.ssh/id_ed25519 alan@strahl echo "OK" +ssh -i ~/.ssh/id_ed25519 mediauser@encode-box echo "OK" ``` ## Shared media mount (recommended)