docs: screenshots, sanitize PII, expand hardware encode docs
Some checks are pending
Deploy docs to GitHub Pages / build (push) Waiting to run
Deploy docs to GitHub Pages / deploy (push) Blocked by required conditions

- Add 4 Playwright screenshots: main UI, scanning, title mapping, mobile
- Embed screenshots in README, index.md, and quickstart.md
- Sanitize docs: replace real name/hostname (alan/strahl) with
  generic examples (mediauser/encode-box)
- ffmpeg.md: add NVENC, QSV, and VAAPI hardware acceleration sections;
  document QSV custom build requirement and jellyfin-ffmpeg workaround
This commit is contained in:
pyr0ball 2026-05-27 09:59:51 -07:00
parent 5e5b3c8df2
commit 12f540d072
11 changed files with 86 additions and 10 deletions

View file

@ -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 ## Features
- **Disc scanning** — detects `VIDEO_TS`, `BDMV`, multi-disc, and ISO structures automatically - **Disc scanning** — detects `VIDEO_TS`, `BDMV`, multi-disc, and ISO structures automatically

View file

@ -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. When set, Discarr sends encode jobs to a remote host over SSH instead of running them locally.
```bash ```bash
SSH_TRANSCODE_HOST=strahl SSH_TRANSCODE_HOST=encode-box
SSH_TRANSCODE_USER=alan SSH_TRANSCODE_USER=mediauser
SSH_TRANSCODE_MEDIA_ROOT=/media SSH_TRANSCODE_MEDIA_ROOT=/media
# Optional: override SSH key path (defaults to ~/.ssh/id_rsa) # Optional: override SSH key path (defaults to ~/.ssh/id_rsa)
SSH_TRANSCODE_KEY=~/.ssh/id_ed25519 SSH_TRANSCODE_KEY=~/.ssh/id_ed25519

View file

@ -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 ## How it works
``` ```

View file

@ -50,12 +50,18 @@ Open **http://localhost:8603**.
## 4. Scan a disc ## 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 1. Paste the path to a disc directory or ISO (e.g. `/media/disc/VIDEO_TS`) into the **Path** field
2. Click **Scan** 2. Click **Scan**
3. Discarr lists the disc titles with duration and chapter count 3. Discarr lists the disc titles with duration and chapter count
## 5. Map titles to arr items ## 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: For each title:
1. Choose **TV (Sonarr)** or **Movie (Radarr)** 1. Choose **TV (Sonarr)** or **Movie (Radarr)**

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View file

@ -39,11 +39,67 @@ FFMPEG_ARGS=-c:v libx265 -crf 22 -preset medium -c:a copy -map 0
| 2224 | High quality | Standard library | | 2224 | High quality | Standard library |
| 2628 | Good quality | Space-constrained | | 2628 | 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 ```bash
ffmpeg -codecs | grep hevc ffmpeg -codecs | grep hevc
ffmpeg -hwaccels 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.

View file

@ -37,7 +37,7 @@ HandBrakeCLI --preset-list
Export a preset from HandBrake's GUI, save it to a JSON file, and reference it: Export a preset from HandBrake's GUI, save it to a JSON file, and reference it:
```bash ```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 HANDBRAKE_PRESET=My Custom Preset
``` ```

View file

@ -30,8 +30,8 @@ Arr import
## Configuration ## Configuration
```bash ```bash
SSH_TRANSCODE_HOST=strahl # hostname or IP of the encode machine SSH_TRANSCODE_HOST=encode-box # hostname or IP of the encode machine
SSH_TRANSCODE_USER=alan # SSH user on that 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_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) 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: Copy the public key to the remote host:
```bash ```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: Verify passwordless login:
```bash ```bash
ssh -i ~/.ssh/id_ed25519 alan@strahl echo "OK" ssh -i ~/.ssh/id_ed25519 mediauser@encode-box echo "OK"
``` ```
## Shared media mount (recommended) ## Shared media mount (recommended)