Tdarr - Configuration Réaliste et Appliquée¶
Date: 2026-02-13
Accès: http://192.168.1.100:8265
Statut: Guide basé sur plugins réellement disponibles
⚠️ Corrections vs Documentation Initiale¶
Plugins inexistants:
- ❌ "Migz-Transcode Intel Quick Sync H265" - N'EXISTE PAS
- ❌ "Migz-Convert audio streams to AAC stereo" - N'EXISTE PAS
Plugins réellement disponibles:
- ✅ Tdarr_Plugin_bsh1_Boosh_FFMPEG_QSV_HEVC (Community)
- ✅ Transcode Using QSV Or VT & FFMPEG (Community)
- ✅ Plugins FFmpeg standards (audio, languages, filters)
Hardware:
- ✅ Intel HD 530 supporte: H.264, HEVC 8-bit
- ❌ Intel HD 530 NE supporte PAS: VC-1 hardware decode (software uniquement)
- ⚠️ HEVC 10-bit: Hardware decode possible, software encode uniquement
Configuration Via WebUI¶
Étape 1: Installation Plugins¶
Navigation: Plugins → Community Plugins
A. Plugin Principal - Transcode Video¶
Rechercher: "QSV" ou "bsh1_Boosh"
Plugin: Tdarr_Plugin_bsh1_Boosh_FFMPEG_QSV_HEVC
Auteur: bsh1 (Boosh)
Description: Transcode to HEVC using Intel Quick Sync Video (QSV)
Action: Install
Configuration après install:
Output Format: hevc
Hardware Encoding: QSV (auto-détecté)
Quality: CRF-like quality 23 (équivalent CQP)
B. Plugin Audio - Conversion AAC¶
Rechercher: "AAC" ou "audio"
Plugin: Tdarr_Plugin_00td_filter_by_codec (pour filtrer)
Tdarr_Plugin_MC93_Migz3FFMPEG_NVENC_Configurable (adapté pour CPU/QSV)
Alternative FFmpeg direct:
Plugin: Tdarr_Plugin_a9hd_FFMPEG_CustomAudio
Configuration:
Codec: aac
Bitrate: 256k
Channels: 2 (stereo)
C. Plugin Streams - Suppression Langues¶
Rechercher: "remove" ou "language"
Plugins disponibles:
- Tdarr_Plugin_00td_Remove_Subs: Nettoyer sous-titres
- Tdarr_Plugin_00td_filter_by_stream_type
- Custom FFmpeg command pour précision
Alternative: Utiliser Custom FFmpeg Plugin
Étape 2: Créer Libraries¶
Navigation: Libraries → Add Library
Library: Movies¶
General:
Name: Movies
Folder: /media/movies
Cache Folder: /temp/movies
Scan Settings:
✅ Folder watch: Enabled
Scan interval: 1800 (30 minutes)
Follow symlinks: ✅
File Filters:
Include Extensions: mkv,mp4,avi,m4v,ts
Minimum File Size (MB): 500
Processing Options:
Hold original: No
Overwrite original: Yes
Create Original Backup: Yes
Original Files Folder: /media/.tdarr-originals/movies/
Container: mkv (recommended for compatibility)
Library: Series¶
General:
Name: Series
Folder: /media/series
Cache Folder: /temp/series
Scan Settings:
✅ Folder watch: Enabled
Scan interval: 1800 (30 minutes)
File Filters:
Include Extensions: mkv,mp4,avi,m4v,ts
Minimum File Size (MB): 200
Processing Options:
Same as Movies
Original Files Folder: /media/.tdarr-originals/series/
Étape 3: Configurer Transcode Flow¶
Navigation: Libraries → [Library Name] → Transcode
Flow Corrigé - Configuration Modulaire (RECOMMANDÉ)¶
Problèmes identifiés dans le flow actuel:
- ❌ Plugin "HDR to SDR" ajoute filtres incompatibles avec VAAPI upload
- ❌ Arguments
-map 0:a:0créent duplications (audio mappé 3x) - ❌ Arguments VAAPI manquent le filtre
hwupload
Flow Minimal Fonctionnel:
Flow Plugins Order:
1. Input File
└─ sourceHandle:1 → Check Video Codec
2. Check Video Codec - HEVC
Plugin: checkVideoCodec
Settings:
Target Codec: hevc
Output:
Handle 1 (is HEVC): → Check Audio Codec
Handle 2 (not HEVC): → Check Audio Codec
3. Check Audio Codec - AAC
Plugin: checkAudioCodec
Settings:
Target Codec: aac
Output:
Handle 1 (is AAC): → Check Channel Count
Handle 2 (not AAC): → Check Channel Count
4. Check Channel Count
Plugin: checkChannelCount
Settings:
Target: 2
Comparison: <=
Output:
Handle 1 (✅ HEVC + AAC 2.0): → [END - Skip processing]
Handle 2 (needs processing): → Check 10 Bit Video
5. Check 10 Bit Video
Plugin: check10Bit
Output:
Handle 1 (is 10-bit): → Begin Command
Handle 2 (is 8-bit): → Begin Command
NOTE: Séparer pour logging, même traitement après
6. Begin Command
Plugin: ffmpegCommandStart
└─ Handle 1 → Remove Data Streams
7. Remove Data Streams
Plugin: ffmpegCommandRemoveDataStreams
└─ Handle 1 → Set Container
8. Set Container
Plugin: ffmpegCommandSetContainer
Settings:
Container: mkv
Force Conform: true
└─ Handle 1 → Video Encode Args
9. All Encoding Args (UNIQUE PLUGIN - Tout en un)
Plugin: ffmpegCommandCustomArguments
Settings:
Input Arguments:
-hwaccel vaapi -hwaccel_device /dev/dri/renderD128
Output Arguments:
-map 0:v:0 -vf format=nv12,hwupload -c:v hevc_vaapi -qp 23 -profile:v main -map 0:a:m:language:fre? -map 0:a:m:language:fra? -c:a aac -ac 2 -b:a 256k -map 0:s:m:language:fre? -map 0:s:m:language:fra? -map 0:s:m:language:eng? -c:s copy
⚠️ IMPORTANT:
- Filtre: format=nv12,hwupload (SANS guillemets ni pipe)
- Tous les arguments dans UN SEUL plugin (évite duplications)
└─ Handle 1 → Execute
10. Execute
Plugin: ffmpegCommandExecute
└─ Handle 1 → Rename File
13. Rename File
Plugin: renameFile
Settings:
File Rename: ${fileName}.${container}
└─ Handle 1 → Move To Original Directory
14. Move To Original Directory
Plugin: moveToOriginalDirectory
15. On Flow Error (side branch)
Plugin: onFlowError
Connected from: Begin Command (handle error)
└─ Handle 1 → Require Review
16. Require Review
Plugin: requireReview
`1. Rename File
Plugin: renameFile
Settings:
File Rename: ${fileName}.${container}
└─ Handle 1 → Move To Original Directory
12 **Arguments consolidés en UN SEUL plugin:**
```bash
# AVANT: 3 plugins séparés (Video Args, Audio Args, Subs Args)
# Causait duplications de streams
# APRÈS: 1 plugin unique "All Encoding Args"
-map 0:v:0 -vf format=nv12,hwupload -c:v hevc_vaapi -qp 23 -profile:v main -map 0:a:m:language:fre? -map 0:a:m:language:fra? -c:a aac -ac 2 -b:a 256k -map 0:s:m:language:fre? -map 0:s:m:language:fra? -map 0:s:m:language:eng? -c:s copy
-
Filtre VAAPI corrigé:
# AVANT (syntaxe invalide): -vf 'format=nv12|vaapi,hwupload' # APRÈS (correct): -vf format=nv12,hwupload⚠️ SANS guillemets simples, SANS pipe |
-
Rename file simplifié:
Retiré " - AAC" du nom (redondant, standard devient AAC)
Flow Réaliste - Option 1 : Plugins Community¶
Stage 1 - Pre-processing (Filters):
Plugin 1: Tdarr_Plugin_00td_filter_by_codec
Function: Skip si déjà HEVC 8-bit + AAC stereo
Settings:
Keep if codec is NOT: hevc
OR: Audio not AAC
OR: Audio channels > 2
Stage 2 - Transcode Video:
Plugin 2: Tdarr_Plugin_bsh1_Boosh_FFMPEG_QSV_HEVC
Function: Transcode H.264/HEVC 10-bit → HEVC 8-bit QSV
Settings:
Output Format: hevc
Quality: 23 (CRF-like)
Hardware: QSV (Intel Quick Sync)
Stage 3 - Transcode Audio:
Plugin 3: Custom FFmpeg Audio (ou plugin audio disponible)
Function: Convert audio → AAC stereo
FFmpeg args: -c:a aac -ac 2 -b:a 256k
Keep: 2 audio tracks max (FR + Original)
Stage 4 - Post-processing:
Plugin 4: Tdarr_Plugin_00td_health_check
Function: Vérifier intégrité fichier
Settings:
Check duration matches: Yes
Check file size reasonable: Yes (>30% original)
Flow Réaliste - Option 2 : FFmpeg Custom (Plus Flexible)¶
Stage 1 - Filter Files:
Plugin: Tdarr_Plugin_00td_filter_by_codec
Skip si: HEVC 8-bit + AAC 2.0 + <3 audio streams + <3 sub streams
Stage 2 - Custom FFmpeg Transcode:
Plugin: Tdarr_Plugin_MC93_Migz3FFMPEG_CustomCommand
⚠️ ATTENTION: Cette approche Custom FFmpeg nécessite configuration avancée.
Utiliser le Flow modulaire ci-dessous pour éviter les conflits.
FFmpeg Command Template (si utilisé):
-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
-i <io> \
-map 0:v:0 -vf 'format=nv12|vaapi,hwupload' -c:v hevc_vaapi -qp 23 -profile:v main \
-map 0:a:m:langformat=nv12,hwupload -c:v hevc_vaapi -qp 23 -profile:v main \
-map 0:a:m:language:fre? -map 0:a:m:language:fra? -c:a aac -ac 2 -b:a 256k \
-map 0:s:m:language:fre? -map 0:s:m:language:fra? -map 0:s:m:language:eng? -c:s copy \
-y <output>
Explications:
-hwaccel vaapi: Hardware decode VAAPI
-hwaccel_device /dev/dri/renderD128: Intel HD 530
-vf format=nv12,hwupload: Convertir format + upload GPU (REQUIS pour hevc_vaapi)
⚠️ SANS guillemets ni pipe |vaapi
-qp 23: Qualité constante (équiv CRF 23)
-profile:v main: HEVC 8-bit Main profile
-map 0:a:m:language:fre?: Garder audio français (optionnel)
RETIRÉ -map 0:a:0: Créait duplications si FR trouvé
-c:a aac -ac 2 -b:a 256k: Convertir audio AAC 2.0
-map 0:s:m:language:...: Garder subs FR et EN seulement
-c:s copy: Copier sous-titres
Étape 4: Configurer Workers¶
Navigation: Options → Transcode Options
General Worker Settings:
Transcode CPUs: 2
Transcode GPUs: 1 (Intel HD 530 via /dev/dri)
Health Check CPUs: 1
GPU Settings:
GPU Encode: ✅ Enabled
GPU ID: 0 (renderD128 détecté automatiquement)
Transcode Limits:
Max Concurrent Transcodes: 2 (optimal pour Intel HD 530)
Low Priority CPU: ✅ (nice level 10)
Processing Order:
Mode: Oldest files first
Priority: Size (larger files first)
Worker Schedule (Optionnel):
Si vous voulez limiter l'utilisation en heures de pointe:
Schedule:
Enabled: ✅
Night (02:00-08:00):
Workers: 2
Priority: High
Day (08:00-23:00):
Workers: 1
Priority: Normal
Evening (23:00-02:00):
Workers: 2
Priority: Normal
Étape 5: Lancer Premier Scan¶
Test avec Échantillon (Recommandé)¶
# Créer dossier test sur host
mkdir -p /mnt/media/movies-test
# Copier 5-10 films variés
# (mix H.264, HEVC 8-bit, HEVC 10-bit)
Dans Tdarr WebUI:
1. Libraries → Add Library → "Movies-Test"
Folder: /media/movies-test
2. Click: "Scan Library"
3. Attendre résultats scan (1-2 min)
4. Check: Libraries → Movies-Test → Files
Vérifier: X files found
5. Click: "Start Transcode"
6. Monitor: Dashboard → Queue
Vérifier: Files processing, speed ~4-8x realtime
Déploiement Complet¶
Une fois test validé:
1. Libraries → Movies → "Scan Library"
2. Attendre scan complet
Durée: ~5-10 min pour 191 films
3. Check queue size
Target: <50 fichiers initialement
4. Click: "Start Transcode"
5. Monitor régulièrement
ETA: 3-4 semaines pour bibliothèque complète
Validation Configuration¶
Test 1: Hardware Acceleration Active¶
# Vérifier device accessible
pct exec 100 -- docker exec tdarr ls -la /dev/dri/renderD128
# Attendu: crw-rw---- 1 root render 226, 128
# Vérifier groupes
pct exec 100 -- docker exec tdarr id
# Attendu: groups includes 104(render) and 44(video)
Test 2: Premier Transcode Réussi¶
Monitoring WebUI:
Dashboard → Statistics:
- Queue Size: Décroissant
- Files Transcoding: 1-2 actifs
- Average Transcode Speed: 4-8x realtime (1080p), 2-4x (4K)
- Worker Status: Healthy, no errors
Vérifier Output:
# Analyser fichier optimisé
pct exec 100 -- docker exec jellyfin /usr/lib/jellyfin-ffmpeg/ffprobe \
-v quiet -print_format json -show_streams \
/media/movies/film-optimise.mkv | grep -E "codec_name|channels|bit_rate"
# Attendu:
# Video: codec_name: hevc, profile: Main (8-bit)
# Audio: codec_name: aac, channels: 2
# Bitrate: ~15-25 Mbps (4K), ~8-12 Mbps (1080p)
Test 3: Jellyfin Direct Play¶
1. Ouvrir Jellyfin: http://192.168.1.100:8096
2. Lire film récemment optimisé
3. Dashboard → Playback Activity
4. Vérifier:
✅ Transcode Reason: (none) ou "Direct Play"
✅ Play Method: DirectPlay
❌ Pas de transcoding actif
Troubleshooting¶
Problème: Queue ne démarre pas¶
# Vérifier status Tdarr
pct exec 100 -- docker ps | grep tdarr
# Logs
pct exec 100 -- docker logs tdarr | tail -50
# Restart si nécessaire
pct exec 100 -- docker restart tdarr
Problème: "hevc_vaapi encoder not found"¶
# Test FFmpeg VAAPI dans container
pct exec 100 -- docker exec tdarr ffmpeg -hwaccels
# Doit lister: vaapi
pct exec 100 -- docker exec tdarr ffmpeg -encoders | grep vaapi
# Doit lister: hevc_vaapi, h264_vaapi
# Si absent: problème driver ou device passthrough
# Solution:
pct exec 100 -- docker restart tdarr
Problème: Transcode très lent (CPU)¶
# Vérifier GPU utilisation
intel_gpu_top # depuis host Proxmox
# Si GPU idle → Hardware accel pas utilisé
# Causes possibles:
# 1. Plugin mal configuré (check settings QSV enabled)
# 2. FFmpeg args incorrects (-hwaccel vaapi manquant)
# 3. Device permissions (vérifier groups render/video)
# Test manuel transcode
pct exec 100 -- docker exec tdarr ffmpeg \
-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
-i /media/movies/test.mkv \
-c:v hevc_vaapi -qp 23 -t 10 \
/temp/test-hw.mkv
# Si succès: Hardware fonctionne, problème dans plugin config
# Si échec: Problème device/permissions
Problème: Fichiers corrompus après transcode¶
Causes: 1. Disk space insuffisant (/temp ou /media)
2. Transcoding interrompu (crash, reboot)
3. Source file corrompu
Solutions:
1. Vérifier space: df -h /mnt/scratch/tdarr-temp
df -h /mnt/media
2. Restaurer backup:
ls /media/.tdarr-originals/movies/
# Copier backup vers media si nécessaire
3. Re-queue fichier: WebUI → Libraries → Files → Find file → Re-add to queue
Métriques Attendues¶
Performance Transcoding¶
| Source | Résolution | Bitrate In | Bitrate Out | Vitesse | CPU Usage |
|---|---|---|---|---|---|
| H.264 1080p → HEVC 8bit | 1920x1080 | 8-12 Mbps | 6-8 Mbps | 10-15x RT | 10-15% |
| HEVC 8bit 4K → HEVC 8bit | 3840x2160 | 25-40 Mbps | 18-25 Mbps | 6-8x RT | 8-12% |
| HEVC 10bit 4K → HEVC 8bit | 3840x2160 | 30-50 Mbps | 18-25 Mbps | 2-3x RT | 40-60% |
| H.264 1080p remux | 1920x1080 | 30-40 Mbps | 6-8 Mbps | 8-10x RT | 12-18% |
Notes:
- RT = Real-Time (temps réel)
- HEVC 10-bit utilise software encode → plus lent mais acceptable
- VC-1 source utilise software decode → performances réduites
Réduction Taille¶
| Type Film | Taille Avant | Taille Après | Réduction |
|---|---|---|---|
| Bluray 1080p remux | 20-30 GB | 6-10 GB | 60-70% |
| Bluray 4K remux | 40-60 GB | 15-25 GB | 50-60% |
| WEB-DL 1080p H.264 | 8-12 GB | 5-7 GB | 30-40% |
| WEB-DL 4K HEVC 8bit | 15-20 GB | 12-15 GB | 20-30% |
Objectif Global: 40-50% réduction taille bibliothèque
Timeline Traitement¶
Test Pilote (10 films):
- Scan: 1-2 minutes
- Transcode: 3-8 heures (selon sources)
- Validation: 1 heure
Total: 5-10 heures
Bibliothèque Complète (191 films):
- Scan initial: 10-15 minutes
- Transcode:
* 142 H.264: ~35 heures (15 min/film avg)
* 6 HEVC 8-bit: ~2 heures (20 min/film)
* 43 HEVC 10-bit: ~30 heures (40 min/film)
Total: ~70 heures (3-4 semaines en arrière-plan)
Configuration Appliquée - Résumé¶
✅ Container Tdarr: Installé et running
✅ Hardware Acceleration: Intel QSV HD 530 activé
✅ Plugins: Community plugins identifiés
⏳ WebUI Config: À compléter manuellement
Prochaine Action:
- Accéder http://192.168.1.100:8265
- Installer plugin:
Tdarr_Plugin_bsh1_Boosh_FFMPEG_QSV_HEVC - Créer libraries Movies et Series
- Configurer flow (Option 1 ou 2)
- Lancer test sur échantillon
Estimation temps: 30-45 minutes configuration initiale
Auteur: Infrastructure Team
Dernière mise à jour: 2026-02-13
Statut: ✅ Guide réaliste basé sur plugins existants