HandBrake Web
Web-based video transcoder.
Overview
HandBrake is a powerful, open-source video transcoder that has been the go-to solution for converting video files between formats since 2003. Originally developed to rip DVDs, HandBrake has evolved into a comprehensive video processing tool that supports virtually every modern codec and container format, including H.264, H.265/HEVC, VP9, AV1, MP4, MKV, and WebM. The software excels at reducing file sizes while maintaining visual quality through advanced encoding algorithms and preset configurations optimized for different devices and streaming platforms.
This Docker configuration wraps HandBrake in a web-accessible VNC interface using jlesage's containerized implementation, transforming the desktop application into a server-based transcoding solution. The setup includes automated batch processing capabilities through a watch folder system, where videos dropped into the monitored directory are automatically converted using predefined settings. The container handles the entire workflow from input detection through final output, eliminating the need for manual intervention in repetitive transcoding tasks.
Media professionals, content creators, and home server enthusiasts will find this stack particularly valuable for building centralized video processing workflows. Unlike desktop HandBrake installations that require direct system access, this web-based approach enables remote transcoding management, batch processing automation, and integration with media server ecosystems like Plex or Jellyfin. The combination of HandBrake's proven transcoding engine with automated folder monitoring creates a hands-off solution for maintaining consistent video formats across large media libraries.
Key Features
- VNC-based web interface accessible through any browser without client software installation
- Automated batch transcoding with configurable watch folder monitoring and processing queues
- Support for hardware-accelerated encoding via Intel Quick Sync Video and AMD VAAPI when GPU devices are mounted
- Extensive preset library including device-specific profiles for Apple TV, Roku, Android, and streaming platforms
- Advanced video filters including deinterlacing, denoising, cropping, and subtitle burning capabilities
- Multi-format container support with automatic stream mapping for video, audio, and subtitle tracks
- Queue management system allowing multiple simultaneous transcoding jobs with priority scheduling
- Comprehensive codec support including modern formats like H.265 HEVC, VP9, and AV1 for maximum compression efficiency
Common Use Cases
- 1Home media server optimization for converting large video collections to consistent formats and bitrates
- 2Content creation workflows requiring batch processing of recorded footage or downloaded source material
- 3Automated video preprocessing for streaming platforms with specific encoding requirements
- 4Remote transcoding services for teams working with video content across different locations
- 5Legacy format conversion for digitizing old DVD collections or proprietary video formats
- 6Bandwidth optimization by creating multiple quality versions of source videos for adaptive streaming
- 7Archive management for reducing storage requirements while preserving acceptable video quality
Prerequisites
- Minimum 4GB RAM for HD video processing, 8GB+ recommended for 4K content transcoding
- Sufficient storage space as transcoding typically requires 2-3x the source file size during processing
- Port 5800 available for web interface access and VNC client connections
- Understanding of video codecs, containers, and quality settings for optimal preset configuration
- GPU drivers and device access configured if planning to use hardware acceleration features
- Directory permissions properly set for Docker container access to watch and output folders
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 handbrake: 3 image: jlesage/handbrake:latest4 container_name: handbrake5 restart: unless-stopped6 ports: 7 - "5800:5800"8 environment: 9 USER_ID: 100010 GROUP_ID: 100011 TZ: UTC12 AUTOMATED_CONVERSION_PRESET: "Very Fast 1080p30"13 AUTOMATED_CONVERSION_FORMAT: mp414 volumes: 15 - handbrake_config:/config16 - /path/to/watch:/watch17 - /path/to/output:/output1819volumes: 20 handbrake_config: .env Template
.env
1# Configure automated conversion settingsUsage Notes
- 1Docs: https://github.com/jlesage/docker-handbrake
- 2Access web UI at http://localhost:5800 (VNC-based interface)
- 3Drop files in /watch folder for automatic conversion
- 4Converted files output to /output, originals in /storage
- 5Presets: AUTOMATED_CONVERSION_PRESET sets encoding quality
- 6Hardware encoding: mount /dev/dri for Intel QSV/AMD VAAPI
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 handbrake:5 image: jlesage/handbrake:latest6 container_name: handbrake7 restart: unless-stopped8 ports:9 - "5800:5800"10 environment:11 USER_ID: 100012 GROUP_ID: 100013 TZ: UTC14 AUTOMATED_CONVERSION_PRESET: "Very Fast 1080p30"15 AUTOMATED_CONVERSION_FORMAT: mp416 volumes:17 - handbrake_config:/config18 - /path/to/watch:/watch19 - /path/to/output:/output2021volumes:22 handbrake_config:23EOF2425# 2. Create the .env file26cat > .env << 'EOF'27# Configure automated conversion settings28EOF2930# 3. Start the services31docker compose up -d3233# 4. View logs34docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/handbrake/run | bashTroubleshooting
- Blank web interface or connection refused: Verify port 5800 is properly mapped and not blocked by firewall rules
- Watch folder not detecting new files: Check volume mount paths and ensure Docker container has read permissions on source directories
- Transcoding fails with codec errors: Verify source video format is supported and adjust AUTOMATED_CONVERSION_PRESET to compatible settings
- Hardware encoding not working: Ensure GPU device is mounted with --device=/dev/dri and appropriate drivers are installed on host system
- Out of disk space errors during processing: Monitor available storage as HandBrake requires temporary space equal to output file size during encoding
- Permission denied writing to output folder: Verify USER_ID and GROUP_ID environment variables match host system ownership of mounted volumes
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download