Jump to content

Optimiseur Emby (HEVC 10-bit & Auto-Nettoyage)


Recommended Posts

Posted

🚀 Tutoriel : 

Ce script est un outil de maintenance "tout-en-un" qui automatise la compression de vos médias tout en garantissant une compatibilité maximale avec Emby. Il transforme vos fichiers (AVI, MP4, WMV...) en MKV HEVC 10-bit de manière totalement autonome.

🛠️ Pré-requis Indispensables

Avant de lancer le script, vous devez installer ces deux moteurs de conversion :


⚙️ Configuration du Script

Ouvrez le fichier .ps1 avec un éditeur de texte (Notepad++ ou VS Code) et vérifiez ces 3 lignes :

  • Les Chemins : Assurez-vous que $HB et $FF pointent vers vos dossiers d'installation.

  • Le Dossier de Travail ($T_DIR) : Par dĂ©faut configurĂ© sur Z:\. C'est ici que le fichier est encodĂ© avant d'ĂŞtre dĂ©placĂ©. Choisissez votre disque le plus rapide (SSD) pour gagner du temps.

  • Les Logs ($L_BASE) : Le script crĂ©e un historique pour ne jamais rĂ©-encoder un fichier dĂ©jĂ  traitĂ©.


✨ Fonctionnalités Avancées

  • SĂ©lection "Touche Unique" : Plus besoin de taper "EntrĂ©e". Appuyez simplement sur la lettre de votre lecteur (S, T, U, etc.) pour lancer l'analyse.

  • Compression Intelligente :

    Vidéo : Passage en HEVC 10-bit via NVIDIA NVENC (Accélération GPU).

    Résolution : Redimensionne automatiquement en 1080p (Max Width 1920) pour économiser de l'espace.

    Audio : Conversion en AAC 192k pour une compatibilité parfaite sur tous les navigateurs et TV.

  • Gestion Multilingue : Le script priorise le Français, mais pour les lecteurs T et W, il conserve automatiquement le Japonais (idĂ©al pour les fans d'Animes).

  • SĂ©curitĂ© Totale : Le script renomme l'original en .old, vĂ©rifie l'intĂ©gritĂ© du nouveau fichier, et ne supprime l'original que si tout est correct.


📝 Comment l'utiliser ?

  • PrĂ©parez vos lecteurs : Assurez-vous que vos disques (NAS ou internes) sont bien mappĂ©s avec les lettres prĂ©vues (S Ă  Y).

  • Lancez PowerShell en Administrateur.

  • ExĂ©cutez le script : .\Emby_Optimize.ps1

  • Choisissez votre cible : Appuyez sur la lettre correspondant au disque Ă  traiter.

[!IMPORTANT] Chemin des lecteurs : Si vos disques utilisent d'autres lettres, modifiez simplement la ligne if ("STUVWXY" -notlike "*$SEL*") dans le script pour ajouter les vĂ´tres.

Emby_Optimize.ps1

  • Like 1
  • Thanks 1
Posted

🛠️ Tutoriel : Optimiseur Emby 10-Bit (V20.5)

Ce script est un outil de maintenance automatisé conçu pour uniformiser votre bibliothèque multimédia. Il convertit massivement vos fichiers vers le format HEVC 10-bit, garantissant un gain d'espace disque considérable et une lecture fluide (Direct Play) sur Emby.

🚀 Évolution : Quoi de neuf dans la V20.5 ?

Par rapport à la version 19.3, la V20.5 apporte des optimisations majeures en termes de robustesse, de visibilité et de performance :

  • Multi-Instance (Multi-FenĂŞtrage) : Le code a Ă©tĂ© réécrit pour permettre de lancer le script plusieurs fois simultanĂ©ment. Chaque instance utilise un nom de fichier temporaire unique (temp_Lecteur_Heure.mkv), Ă©vitant tout conflit.

  • Scan de Progression Visible : Contrairement Ă  la V19 qui Ă©tait "silencieuse", la V20.5 affiche en temps rĂ©el le scan du disque avec un compteur [X/Total]. Les fichiers dĂ©jĂ  traitĂ©s apparaissent en gris ([IGNORÉ]), vous permettant de voir l'avancement global.

  • Auto-DĂ©tection des Outils : Plus besoin de modifier systĂ©matiquement les chemins $HB et $FF. Le script cherche dĂ©sormais HandBrake et FFmpeg directement dans le PATH du système Windows.

  • HandBrake CLI : TĂ©lĂ©charger ici (Essentiel pour la gestion des pistes audio/sous-titres).

  • FFmpeg : TĂ©lĂ©charger ici (Sert de moteur de secours si HandBrake Ă©choue).

  • Correction Unicode "BlindĂ©e" : Utilisation d'une mĂ©thode de reconstruction par octets pour l'affichage des accents (SĂ©ries, AnimĂ©s). Cela garantit un menu propre, peu importe la configuration de votre console PowerShell.

  • PrioritĂ© Audio Étendue : Le support du Japonais automatique a Ă©tĂ© Ă©tendu au lecteur de T et W.


💻 Matériel Minimum pour le Double Encodage

Pour lancer deux encodages en même temps (en ouvrant deux fenêtres PowerShell), votre machine doit répondre aux critères suivants :

  • Carte Graphique (GPU) : Une NVIDIA GeForce GTX 1050 ou supĂ©rieure (architecture Pascal minimum). Une RTX 3050 Ti (pour ma part) est idĂ©ale car elle possède un moteur NVENC de 7ème gĂ©nĂ©ration très efficace.

  • Processeur (CPU) : Un processeur avec au moins 4 cĹ“urs / 8 threads (ex: Intel Core i5/i7 ou AMD Ryzen 5). Le CPU s'occupe du dĂ©codage et du traitement audio pendant que le GPU encode la vidĂ©o.

  • MĂ©moire Vive (RAM) : 8 Go minimum (16 Go recommandĂ©s pour Ă©viter les ralentissements système).

  • Disque de Travail ($T_DIR) : Un SSD est fortement recommandĂ© pour le dossier temporaire afin d'Ă©viter les goulots d'Ă©tranglement lors de l'Ă©criture simultanĂ©e de deux flux vidĂ©o lourds.


⚙️ Configuration & Utilisation

1. Pré-requis

Installez HandBrake CLI et FFmpeg. Assurez-vous qu'ils sont accessibles dans votre terminal (ajoutés au PATH Windows).

2. Paramétrage

Dans le fichier .ps1, vérifiez simplement :

  • $T_DIR : Le dossier oĂą le travail s'effectue (ex: Z:\Encoder_Emby).

  • $L_BASE : Le dossier oĂą les logs de succès sont stockĂ©s.

3. Lancement en mode "Turbo"

  • Faites un clic droit sur Emby_Optimize.ps1 > ExĂ©cuter avec PowerShell.

  • Choisissez un premier lecteur (ex: Y pour les Films).

  • Ouvrez une deuxième fenĂŞtre du script.

  • Choisissez un second lecteur (ex: T pour les Mangas).

  • Surveillez la charge dans le Gestionnaire des tâches (onglet Performance > GPU > Video Encode).


[!IMPORTANT] Rappel sur les Lecteurs

Le script est pré-configuré pour les labels suivants : (ma config sur NAS)

  • S : Cartoons / T : Mangas / U : SĂ©ries / V : Spectacles / W : Animations / X : AnimĂ©s / Y : Films.

Si vos lettres diffèrent, modifiez la ligne : if ("STUVWXY" -notlike "*$SEL*") { continue } en y ajoutant vos propres lettres de lecteurs.

Emby_Optimize_V20.5.ps1

Posted

Salut

Très sympa l'idée et merci pour le partage ! Tu prévois une version Linux ?

Merci

WDPR4100
Posted
10 hours ago, vincen said:

Salut

Très sympa l'idée et merci pour le partage ! Tu prévois une version Linux ?

Merci

🚀 Release : Emby Optimize V20.5 (Version Linux)

Voici la conversion du script de maintenance pour serveurs Emby. Cette version Bash est conçue pour automatiser l'encodage H.265 10-bit NVENC sur les systèmes Linux.

[!CAUTION] AVERTISSEMENT : Ce script a été porté de PowerShell vers Linux mais n'a pas pu être testé sur une machine physique pour le moment.

CONSEIL DE SÉCURITÉ : Avant de lancer le script sur l'intégralité de votre bibliothèque, créez un dossier de test avec 2 ou 3 fichiers vidéos pour vérifier que les chemins, les permissions et l'encodage GPU fonctionnent correctement sur votre configuration.

Ce guide vous permet d'installer un script qui automatise la conversion de vos vidéos au format H.265 10-bit en utilisant l'accélération matérielle NVIDIA (NVENC).

1. Prérequis

Avant de commencer, votre système doit avoir accès aux outils d'encodage :

  • HandBrake CLI : L'outil de conversion.

  • Pilotes NVIDIA : Pour que votre carte graphique puisse encoder.

Installation sur Ubuntu/Debian/Mint :

sudo apt update && sudo apt install handbrake-cli -y

2. Le Script (emby_optimize.sh)

Copiez l'intégralité du bloc ci-dessous dans un fichier nommé emby_optimize.sh.

#!/bin/bash

# ============================================================
#      OPTIMISEUR EMBY 10-BIT V20.5 (Linux Universel)
# ============================================================

# --- CONFIGURATION : MODIFIEZ VOS CHEMINS ICI ---
DIR_CARTOONS="/home/$USER/Videos/Cartoons"
DIR_MANGAS="/home/$USER/Videos/Mangas"
DIR_SERIES="/home/$USER/Videos/Series"
DIR_SPECTACLES="/home/$USER/Videos/Spectacles"
DIR_ANIMATIONS="/home/$USER/Videos/Animations"
DIR_ANIMES="/home/$USER/Videos/Animes"
DIR_FILMS="/home/$USER/Videos/Films"

# Dossiers techniques
T_DIR="/tmp/Encoder_Emby"
L_BASE="$HOME/.cache/Emby_Optimize_Logs"

# --- LOGIQUE DU SCRIPT ---
mkdir -p "$T_DIR" "$L_BASE"

show_menu() {
    clear
    echo "============================================"
    echo "      OPTIMISEUR EMBY 10-BIT V20.5"
    echo "============================================"
    echo "[S] Cartoons     [T] Mangas      [U] Séries"
    echo "[V] Spectacle    [W] Animations  [X] Animés"
    echo "[Y] Films        [Q] Quitter"
    echo "--------------------------------------------"
}

if ! command -v HandBrakeCLI &> /dev/null; then
    echo -e "\e[31m[!] HandBrakeCLI non trouvé. Installez-le d'abord.\e[0m"
    exit 1
fi

while true; do
    show_menu
    read -p "Choisissez une catégorie : " SEL
    SEL=$(echo "$SEL" | tr '[:lower:]' '[:upper:]')
    [[ "$SEL" == "Q" ]] && break

    case $SEL in
        S) ROOT="$DIR_CARTOONS" ; LANG="fra" ;;
        T) ROOT="$DIR_MANGAS"   ; LANG="jpn,fra" ;;
        U) ROOT="$DIR_SERIES"   ; LANG="fra" ;;
        V) ROOT="$DIR_SPECTACLES" ; LANG="fra" ;;
        W) ROOT="$DIR_ANIMATIONS" ; LANG="jpn,fra" ;;
        X) ROOT="$DIR_ANIMES"   ; LANG="fra" ;;
        Y) ROOT="$DIR_FILMS"    ; LANG="fra" ;;
        *) continue ;;
    esac

    L_ROOT="${L_BASE}/Logs_${SEL}"
    if [ ! -d "$ROOT" ]; then
        echo -e "\e[31m[!] Chemin introuvable : $ROOT\e[0m"
        sleep 2 ; continue
    fi

    echo -e "\e[33m--- SCAN EN COURS : $ROOT ---\e[0m"
    mapfile -t files < <(find "$ROOT" -type f \( -iname "*.mkv" -o -iname "*.mp4" -o -iname "*.avi" -o -iname "*.mov" \))
    
    total=${#files[@]}
    current=0

    for file in "${files[@]}"; do
        ((current++))
        rel_path="${file#$ROOT/}"
        log_file="${L_ROOT}/${rel_path%.*}.txt"
        
        if [ -f "$log_file" ]; then
            echo -e "\e[90m[$current/$total] [IGNORE] $(basename "$file")\e[0m"
            continue
        fi

        echo "--------------------------------------------------------"
        echo -e "[$current/$total] [ACTION] -> $(basename "$file")"
        TS=$(date +"%H%M%S")
        work_out="${T_DIR}/temp_${SEL}_${TS}.mkv"

        HandBrakeCLI -i "$file" -o "$work_out" \
            -e nvenc_h265_10bit -q 28 --encoder-preset fast \
            --maxWidth 1920 --audio-lang-list "$LANG" \
            -E av_aac -B 192 --all-subtitles --markers

        if [ -f "$work_out" ] && [ $(stat -c%s "$work_out") -gt 1048576 ]; then
            old_path="${file}.old"
            mv "$file" "$old_path"
            final_path="${file%.*}.mkv"
            if mv "$work_out" "$final_path"; then
                rm "$old_path"
                mkdir -p "$(dirname "$log_file")"
                echo "OK" > "$log_file"
                echo -e "\e[32m[OK] Terminé.\e[0m"
            fi
        fi
        [ -f "$work_out" ] && rm "$work_out"
    done
    echo -e "\n\e[36m--- TERMINÉ ---\e[0m" ; sleep 2
done

🛠️ Configuration du script

Ouvrez le fichier emby_optimize.sh et modifiez les variables au début selon votre installation.

Variables Ă  adapter :

  • DIR_... : Remplacez les chemins par dĂ©faut par les points de montage de vos disques (ex: /mnt/media/Films).

  • T_DIR : Le dossier temporaire oĂą le script va crĂ©er le fichier en cours d'encodage. Assurez-vous d'avoir assez d'espace disque ici.

  • L_BASE : Le dossier oĂą seront stockĂ©s les fichiers .txt de suivi (pour Ă©viter de rĂ©-encoder un fichier dĂ©jĂ  traitĂ©).

🚀 Comment l'essayer ?

  • Copiez le script dans un fichier emby_optimize.sh.

  • Autorisez l'exĂ©cution : chmod +x emby_optimize.sh.

  • Testez : Pointez une des variables (ex: DIR_FILMS) vers un dossier de test contenant 1 ou 2 fichiers seulement.

  • Lancez : ./emby_optimize.sh.

Si tout fonctionne sur vos fichiers de test, vous pourrez alors l'appliquer à votre base de données complète !

vincen
Posted

Merci pour le partage, je ne peux pas le tester car je n'ai pas de matos NVidia sur mon serveur Emby mais 2 petits points qui me chiffonnent:

-> tu convertis tout en HD par défaut ? quid des formats 4K ? Ça serait bien de faire un test sur les fichiers pour garder le format avant de lancer la conversion.

-> au lieu d'utiliser un fichier txt pour savoir ce qui a été converti, pourquoi ne pas tout simplement vérifier chaque média pour voir s'il est en HEVC ou pas et convertir uniquement ceux qui ne sont pas en HEVC ?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...