Files
encoderPro/config-cpu.yaml
2026-01-24 17:43:28 -05:00

247 lines
8.0 KiB
YAML

# =============================================================================
# ENCODERPRO CONFIGURATION - CPU ONLY
# =============================================================================
# Optimized configuration for software encoding (no GPU)
# =============================================================================
# DIRECTORY PATHS
# =============================================================================
# When running in Docker, these paths are mapped from host
movies_dir: /movies
archive_dir: /archive
work_dir: /work
state_db: /db/state.db
log_dir: /logs
# =============================================================================
# PARALLEL PROCESSING
# =============================================================================
parallel:
# CPU encoding recommendations by core count:
# 16+ cores: 3-4 workers
# 8-12 cores: 2-3 workers
# 4-6 cores: 1-2 workers
# Note: Each worker uses significant CPU resources
max_workers: 2
# GPU slots not used for CPU encoding
gpu_slots: 0
# CPU slots - adjust based on your CPU
# Rule of thumb: physical cores / 2
cpu_slots: 4
# =============================================================================
# ENCODING PROFILES
# =============================================================================
profiles:
# Default profile - CPU sweet spot
default: sweetspot_cpu
definitions:
# --- RECOMMENDED SWEET SPOT PROFILE ---
# BEST CHOICE: Perfect balance of quality and compression (slow but worth it!)
sweetspot_cpu:
encoder: cpu_x265
preset: slow
quality: 21 # CRF 21 = visually transparent quality
audio_codec: copy
description: "⭐ RECOMMENDED - Excellent quality, slow but worth the wait"
# --- CPU ENCODING PROFILES ---
# Balanced H.265 encoding (faster, still good quality)
balanced_cpu:
encoder: cpu_x265
preset: medium
quality: 23
audio_codec: copy
description: "Balanced CPU encoding - good quality/speed tradeoff"
# Fast H.264 encoding (quickest option, larger files)
fast_cpu:
encoder: cpu_x264
preset: fast
quality: 26
audio_codec: copy
description: "Fast CPU encoding with H.264 - larger files"
# Maximum quality H.265 (very slow, best quality)
quality_cpu:
encoder: cpu_x265
preset: veryslow
quality: 19
audio_codec: copy
description: "Maximum CPU quality - extremely slow, near-lossless"
# H.264 sweet spot (for maximum compatibility)
sweetspot_h264:
encoder: cpu_x264
preset: slow
quality: 21
audio_codec: copy
description: "H.264 sweet spot - universal compatibility"
# Quick test profile (fastest possible)
test_fast:
encoder: cpu_x264
preset: veryfast
quality: 28
audio_codec: copy
description: "Very fast test encoding - lower quality"
# =============================================================================
# PROCESSING SETTINGS
# =============================================================================
processing:
file_extensions:
- mkv
- mp4
- avi
- m4v
- ts
- m2ts
# Skip files without subtitles (change to false to process all files)
skip_without_subtitles: false # Deprecated - all files now scanned, use dashboard filters
# Clean up abandoned work files on startup
cleanup_stale_work: true
# =============================================================================
# QUALITY CHECKING
# =============================================================================
quality_check:
# Enable pre-encoding quality analysis to detect quality degradation
enabled: true
# Warning threshold - warn if quality will drop by this many points (0-100 scale)
# Example: Source quality 85 → Target quality 70 = 15 point drop (warning)
warn_threshold: 10.0
# Error threshold - fail/skip if quality will drop by this many points
# Example: Source quality 85 → Target quality 60 = 25 point drop (error)
error_threshold: 20.0
# Automatically skip files where encoding would degrade quality
# Set to false to warn but continue encoding anyway
skip_on_degradation: false
# Prompt user for confirmation when warnings detected (CLI only)
prompt_on_warning: true
# =============================================================================
# ADVANCED OPTIONS
# =============================================================================
advanced:
# No GPU detection needed
auto_detect_encoder: false
fallback_to_cpu: true # Already using CPU
# Resolution-based rules (optional)
resolution_rules:
enabled: false
rules:
- max_width: 1920 # 1080p
profile: fast_cpu
- max_width: 3840 # 4K
profile: sweetspot_cpu
- max_width: 7680 # 8K
profile: balanced_cpu
# HDR handling
hdr:
detect_hdr: true
preserve_metadata: true
tone_mapping: false # Set to true to convert HDR to SDR
# Audio options
audio:
default_codec: copy
max_channels: 8
normalize: false
# =============================================================================
# CPU ENCODING NOTES
# =============================================================================
#
# CPU Encoding Characteristics:
# - MUCH slower than GPU encoding (10-50x slower)
# - Better quality per bitrate than GPU encoding
# - Uses significant CPU resources
# - Perfect for quality-focused archival
# - No hardware limitations or compatibility issues
#
# Preset Guide (fastest to slowest):
# - ultrafast: Very fast, poor compression
# - superfast/veryfast: Fast, moderate compression
# - faster/fast: Good speed, decent compression
# - medium: Balanced (default for most encoders)
# - slow: Better compression, recommended sweet spot
# - slower: Excellent compression, very slow
# - veryslow: Best compression, extremely slow (2-3x slower than slow)
#
# Quality Guide (CRF):
# - 18-19: Near-lossless, very large files
# - 20-21: Visually transparent (sweet spot!)
# - 22-24: Excellent quality, good compression
# - 25-28: Good quality, smaller files
#
# Recommended Profiles by Use Case:
# - Best quality/size: sweetspot_cpu (H.265, slow, CRF 21)
# - Faster encoding: balanced_cpu (H.265, medium, CRF 23)
# - Maximum compatibility: sweetspot_h264 (H.264, slow, CRF 21)
# - Archival quality: quality_cpu (H.265, veryslow, CRF 19)
# - Testing: test_fast (H.264, veryfast, CRF 28)
#
# Performance Expectations (1080p content):
# 16-core CPU (H.265, slow): 5-10 fps (2-4 hours per movie)
# 8-core CPU (H.265, slow): 3-7 fps (3-6 hours per movie)
# 4-core CPU (H.265, slow): 2-4 fps (5-10 hours per movie)
#
# 16-core CPU (H.264, fast): 10-20 fps (1-2 hours per movie)
# 8-core CPU (H.264, fast): 7-15 fps (1.5-3 hours per movie)
# 4-core CPU (H.264, fast): 4-10 fps (2-5 hours per movie)
#
# Tips for CPU Encoding:
# 1. Use sweetspot_cpu for best quality/size balance
# 2. Process overnight or during idle times
# 3. Don't run too many workers (max_workers: 1-2 recommended)
# 4. Use balanced_cpu or fast_cpu if speed is important
# 5. Software encoding produces better quality than GPU at same bitrate
# 6. Consider upgrading to a GPU if you encode frequently
#
# Why Use CPU Encoding?
# - No GPU available
# - Want absolute best quality
# - Small library (encode time doesn't matter)
# - Testing/learning the system
# - GPU incompatibility or driver issues
#
# Worker Count Recommendations:
# - High-end CPU (16+ cores): max_workers: 2-3
# - Mid-range CPU (8-12 cores): max_workers: 1-2
# - Budget CPU (4-6 cores): max_workers: 1
# - Always leave CPU headroom for system operations
#
# Encoding Time Examples:
# sweetspot_cpu (H.265, slow, CRF 21):
# - 1080p 2-hour movie on 8-core: 3-5 hours
# - 4K 2-hour movie on 8-core: 8-12 hours
#
# balanced_cpu (H.265, medium, CRF 23):
# - 1080p 2-hour movie on 8-core: 2-3 hours
# - 4K 2-hour movie on 8-core: 5-8 hours
#
# fast_cpu (H.264, fast, CRF 26):
# - 1080p 2-hour movie on 8-core: 1-2 hours
# - 4K 2-hour movie on 8-core: 3-5 hours
# =============================================================================