Snacks v2.0.1
Automated Video Library Encoder
Patch release focused on 4K encoding reliability, queue usability, and Docker deployment fixes.
What's New
Encoding Engine
- 4K VAAPI calibration overhaul -- starting QP raised from 24 to 30 for 4K content, test duration doubled to 60 seconds, sample point moved to 40% into the file (avoids intros), and max calibration iterations increased from 3 to 6 so quality convergence actually reaches the target bitrate
- Stall detection timeout increased to 5 minutes -- the previous 30-second timeout was killing FFmpeg during the final muxing phase (moov atom relocation for MP4, MKV finalization) on large 4K files and slow NAS drives, causing failures at 99% progress
- Bitrate tolerance loosened to 20% -- VAAPI CQP calibration now accepts output within 20% of target (was 15%), reducing unnecessary re-calibration passes
Web Interface
- Queue filter tabs -- filter the queue by All, Pending, Completed, or Failed with count badges on each tab
- First/last page navigation -- pagination now includes double-chevron buttons to jump directly to the first or last page
- Fixed "Now Processing" flickering -- the processing indicator no longer disappears and reappears when viewing non-first pages of the queue
- Fixed first page showing fewer items -- processing items are now excluded from pagination so every page shows the full 5 items
- Removed refresh button -- the queue auto-refreshes via SignalR so the manual refresh button was unnecessary
Docker & Deployment
- Fixed Docker Desktop startup failure -- GPU passthrough settings (
/dev/dri,video/rendergroups) moved to a separatedocker-compose.gpu.ymloverlay so the base compose works on Windows and Mac without errors - Fixed port mismatch -- base
docker-compose.ymlandDockerfilenow consistently use port 6767 (was incorrectly set to 8080 in some places) - Dual Docker Hub push --
build-and-export.batnow pushes to bothderekshreds/snacks-docker:latestandderekshreds/snacksweb:latestso users on the old image name receive updates - Backend status filtering --
GetWorkItemsendpoint accepts an optional?status=parameter for server-side filtering
Deployment
NAS (Docker)
docker pull derekshreds/snacks-docker:latestOn Linux hosts with GPU acceleration, use the GPU overlay:
docker-compose -f docker-compose.yml -f docker-compose.gpu.yml up -dWindows (Docker Desktop)
start-snacksweb.batUses the base compose only -- no GPU passthrough needed.
Windows Desktop
Download the installer from the Releases page, or build from source:
build-installer.batFiles Changed
TranscodingService.cs-- calibration and stall detection improvementsHomeController.cs-- processing items separated from pagination, status filter parametertranscoding.js-- filter tabs, pagination, processing section fixIndex.cshtml-- filter tabs replacing refresh buttonsite.css-- filter tab stylingdocker-compose.yml-- removed GPU settings, fixed port to 6767docker-compose.gpu.yml-- new GPU overlay for Linux hostsDockerfile-- fixed EXPOSE to 6767build-and-export.bat-- dual image pushstart-snacksweb.bat-- removed GPU overlay, fixed port referencesstart-snacksweb.sh-- uses GPU overlay
Full documentation: README.md