Skip to content

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:0 cré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
  1. Filtre VAAPI corrigé:

    # AVANT (syntaxe invalide):
    -vf 'format=nv12|vaapi,hwupload'
    
    # APRÈS (correct):
    -vf format=nv12,hwupload
    

    ⚠️ SANS guillemets simples, SANS pipe |

  2. 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:

  1. Accéder http://192.168.1.100:8265
  2. Installer plugin: Tdarr_Plugin_bsh1_Boosh_FFMPEG_QSV_HEVC
  3. Créer libraries Movies et Series
  4. Configurer flow (Option 1 ou 2)
  5. 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