# Dual Encoder Support - Implementation Complete ✅ ## Features Added The transcoder now supports switching between two video encoders via the `--encoder` CLI option: ### 1. **HEVC NVENC 10-bit** (Default) - **Command**: `--encoder nvenc` or default (no flag needed) - **Codec**: `hevc_nvenc` - **Preset**: `slow` (high quality) - **Bit Depth**: 10-bit - **Pixel Format**: `yuv420p10le` - **Use Case**: Best quality archival format, suitable for Plex compatibility ### 2. **AV1 NVENC 8-bit** - **Command**: `--encoder av1` - **Codec**: `av1_nvenc` - **Preset**: `p7` (high quality) - **Bit Depth**: 8-bit - **Pixel Format**: `yuv420p` - **Use Case**: Maximum file size reduction, modern playback devices ## Usage Examples ```bash # Default to HEVC NVENC 10-bit with smart resolution scaling python main.py "C:\Videos\Movies" # Force AV1 NVENC 8-bit encoding python main.py "C:\Videos\TV" --encoder av1 # AV1 with explicit resolution python main.py "C:\Videos\Anime" --encoder av1 --r 1080 # AV1 with CQ mode at specific quality python main.py "C:\Videos\Low-Res" --encoder av1 --cq 28 # AV1 with bitrate mode python main.py "C:\Videos\Movies" --encoder av1 --m bitrate # HEVC (explicit, though it's the default) python main.py "C:\Videos\TV" --encoder nvenc --cq 26 ``` ## Configuration Encoder settings are stored in `config.xml`: ```xml ``` The `default="nvenc"` attribute can be changed, but CLI `--encoder` flag always takes precedence. ## Files Modified 1. **config.xml** - Added `` section with both encoder configurations 2. **main.py** - Added `--encoder` argument, defaults to "nvenc" 3. **encode_engine.py** - Updated `run_ffmpeg()` to: - Accept `encoder` parameter - Dynamically set encoder codec, preset, bit depth, and pixel format - Display encoder details in logging output 4. **process_manager.py** - Updated to: - Accept and pass `encoder` parameter through processing pipeline - Updated both Phase 1 (initial encode) and Phase 2 (bitrate retry) encode calls ## Quality Notes | Aspect | HEVC NVENC | AV1 NVENC | |--------|-----------|----------| | **File Size** | ~80-90% of AV1 | Smallest (baseline) | | **Quality** | Excellent | Excellent | | **Preset** | slow (p6) | p7 | | **Bit Depth** | 10-bit | 8-bit | | **Compatibility** | Excellent (Plex) | Good (modern devices) | | **Encoding Speed** | Fast | Fast | Both encoders use NVIDIA GPU acceleration (NVENC) for fast encoding.