2.5 KiB
2.5 KiB
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 nvencor 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
# 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:
<encoder default="nvenc">
<av1_nvenc preset="p7" bit_depth="8" pix_fmt="yuv420p" />
<hevc_nvenc preset="slow" bit_depth="10" pix_fmt="yuv420p10le" />
</encoder>
The default="nvenc" attribute can be changed, but CLI --encoder flag always takes precedence.
Files Modified
- config.xml - Added
<encoder>section with both encoder configurations - main.py - Added
--encoderargument, defaults to "nvenc" - encode_engine.py - Updated
run_ffmpeg()to:- Accept
encoderparameter - Dynamically set encoder codec, preset, bit depth, and pixel format
- Display encoder details in logging output
- Accept
- process_manager.py - Updated to:
- Accept and pass
encoderparameter through processing pipeline - Updated both Phase 1 (initial encode) and Phase 2 (bitrate retry) encode calls
- Accept and pass
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.