Asustor Réencodage piste son

marcus54

Apprenti
20 Juin 2025
55
3
13
nancy
Bonjour,
J'aimerais savoir s'il existe un utilitaire qui permet de réencoder la piste son sur un film en MKV.
J'ai de temps en temps des films avec une piste son TrueHD Atmos 7.1 qui ne passe pas sur ma télé.
Pour le moment j'utilise MKVToolNix GUI pour démultiplexer, ensuite je convertie la piste son et je la re multiplex.
J'ai vu qu'il y avait certaines applications qui permettaient de réencoder des fichiers vidéo, mon but n'est pas de changer la vidéo, mais simplement la piste son.
Si vous avez des infos
merci
 
Bonjour Marcus,
Pour ma part, j'utilise Shutter Encoder sur Mac mais qui existe aussi sous Windows.

Voici comment je procède sous MacOS
  1. Lancer l'application Shutter Encoder.
  2. Glisser le fichier à traiter dans la zone appropriée (c'est écrit explicitement glisser ici, ou quelque chose d'approchant).
  3. Au volet Choix de la fonction, choisir Réencapsulage puis sélectionner le conteneur dans le menu pop-up immédiatement à droite (par exemple .mkv).
  4. Dans la partie en haut à droite de l'écran, cliquer Réglage audio puis sélectionner Convertir afin de pouvoir sélectionner le format audio (par exemple AAC), le débit (par exemple 256 kb/s) et la fréquence d'échantillonnage (par exemple 48k).
  5. Préciser le dossier de destination, dans la partie à gauche, dans le dernier tiers de la fenêtre.
  6. Cliquer Démarrer la fonction (juste au dessus de la région ayant permis de choisir le dossier de destination).
Le flux vidéo ne sera pas touché et le flux audio sera convertis.
 
Dernière édition:
  • J'aime
Réactions: marcus54 et Galixte
@marcus54,
J'avais fait un script sh il y a quelques années pour convertir les pistes audio en eac3 car mon ampli ne prenait pas en compte le DTS et les formats récents.
Je ne l'utilise plus car j'ai changé de materiel audio. il fonctionne avec ffmpeg_x64 et s'execute sur un NAS facilement, dans mon cas c'était sur un 920+
Le script scanne un dossier défini, et traite les bandes son de chaque fichier pour les transformer en eac3.
voici la partie du code:

Bash:
#!/bin/bash

# ffmpeg_x64 compatible DS920+ est disponible dans les paquets SynoCommunity et ici: https://github.com/th0ma7/synology/tree/master/packages/dsm7-beta
# dernière version installée 4.4.2-46
# utilise ffmpeg_x64

logfolder=/volume1/scriptlog # Dossier où se trouve ce script et les fichiers temporaires
mkvfolder=/volume2/teamvideo # Dossier des mkv sur volume2 NVMe

# if [ ! -d $mkvfolder ]; then
#    echo 2-1 > /sys/bus/usb/drivers/usb/unbind
#    echo 2-1 > /sys/bus/usb/drivers/usb/bind
#    sleep 10
# fi

if pidof -o %PPID -x "Copy2EAC3.sh">/dev/null
then
    echo -e `date +'%d/%m/%Y %X'` "Une copie de Copy2EAC3.sh est déjà en cours\n" >> $logfolder/CheckAudio.log
     exit 0
fi

if [ "$(find $mkvfolder/ -name '*.mkv' | wc -l)" -lt "1" ]; then exit ; fi # y a-t-il des fichiers mkv à traiter

# formatage des noms de fichiers.mkv (optionnel)
find $mkvfolder/ -name '*.MKV' | while read i ; do mv "$i" ${i//MKV/mkv} ; done # remplace l'extension MKV en mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i// /.} ; done # remplace les espaces par des . dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i//,/} ; done # supprime les , dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i//../.} ; done # remplace les .. par des . dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i//_/.} ; done # remplace le _ par un . dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i//.-./.} ; done # remplace les .-. par des . dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" ${i//!/} ; done # supprime les ! dans les mkv
find $mkvfolder/ -name '*.mkv' | while read i ; do mv "$i" `echo $i | sed 's/\x27//g'` ; done # supprime les ' dans les mkv
# fin du formatage des noms de fichier

# traitement
find $mkvfolder/ -name '*.mkv' | sort > $logfolder/file.nfo # fichier contenant tous les .mkv à traiter
for i in $(cat $logfolder/file.nfo); do
    md=${i/.mkv/.md}
    txt=${i/.mkv/.txt}
    echo `date +'%d/%m/%Y %X'` ": ${i##*/}" >> $logfolder/CheckAudio.log # nom du MKV analysé
    /var/packages/ffmpeg/target/bin/ffmpeg -hide_banner -i "$i" >& "$md"
    cat "$md" |grep -n 'Audio:' >> $logfolder/CheckAudio.log # nom et position de toutes les pistes audio du MKV analysé
    if ((grep "(fre): Audio: dts" $md) || (grep "(fre): Audio: truehd" $md) || (grep "(fra): Audio: dts" $md) || (grep "(fre): Audio: opus" $md) || (grep "(fre): Audio: aac" $md) || (grep "(fre): Audio: mp3" $md) || (grep "(fre): Audio: mp2" $md)); then
        if !(grep "Could not find codec" $md | grep "Audio"); then
            cat "$md" |grep 'Audio:' > "$txt"
            pos=$(cat "$txt" |grep -n '(fre): Audio: dts')
            if (grep "(fra): Audio: dts" $txt); then pos=$(cat "$txt" |grep -n '(fra): Audio: dts'); fi
            if (grep "(fre): Audio: truehd" $txt); then pos=$(cat "$txt" |grep -n '(fre): Audio: truehd'); fi
            if (grep "(fre): Audio: opus" $txt); then pos=$(cat "$txt" |grep -n '(fre): Audio: opus'); fi
            if (grep "(fre): Audio: aac" $txt); then pos=$(cat "$txt" |grep -n '(fre): Audio: aac'); fi
            if (grep "(fre): Audio: mp2" $txt); then pos=$(cat "$txt" |grep -n '(fre): Audio: mp2'); fi
            if (grep "(fre): Audio: mp3" $txt); then pos=$(cat "$txt" |grep -n '(fre): Audio: mp3'); fi
            po=$((${pos:16:1}-1))
            if [ "$po" -lt "0" ]; then po=0 ; fi # cas du Stream audio #0:0(fre)
            out=${i/.mkv/.EAC3.mkv}    
            /var/packages/ffmpeg/target/bin/ffmpeg -i "$i" -map 0 -c copy -c:a:"$po" eac3 -b:a 960k "$out"
            /var/packages/ffmpeg/target/bin/ffmpeg -hide_banner -i "$out" >& "$md" # check le md du MKV modifé avec EAC3
            if (grep "(fre): Audio: eac3" $md); then echo "$(cat "$md" |grep -n '(fre): Audio: eac3')" "<< piste convertie en eac3" >> $logfolder/CheckAudio.log; fi
            if (grep "(fra): Audio: eac3" $md); then echo "$(cat "$md" |grep -n '(fra): Audio: eac3')" "<< piste convertie en eac3" >> $logfolder/CheckAudio.log; fi
            rm "$txt" "$i"
        else
            echo "Stream (fre) Audio dts, truehd, aac ou opus indéfini, fichier déplacé dans le dossier video(.bad)" >> $logfolder/CheckAudio.log
            mv "$i" /volume1/video/${i##*/}.bad
        fi
    fi
    rm "$md"
    echo "" >> $logfolder/CheckAudio.log
done
rm $logfolder/file.nfo
exit 0
 
  • J'aime
Réactions: marcus54
Pour ma part, j'utilise Shutter Encoder
Salut,
Merci pour ce logiciel. Il est très sympa puisque tout est en un.
Le seul truc qui pourrait manquer c'est de pouvoir supprimer les pistes son inutiles dans les langues étrangères qui des fois bouffent pas mal de place
Sinon il est très efficace et facile à utiliser.
8 minutes pour transcoder les pistes son d'un fichier de 42Go sur le NAS avec un réseau 1Gb.

@jeu2 bravo, mais c'est trop compliqué pour moi ;)
 
Le seul truc qui pourrait manquer c'est de pouvoir supprimer les pistes son inutiles dans les langues étrangères qui des fois bouffent pas mal de place
Rebonjour,

Avec ce que j'ai indiqué plus haut:
  • Toutes les pistes audio sont converties selon les paramètres indiqués, par exemple, selon mon commentaire précédent, elles seront toutes à AAC/ 256kbs/48000.
  • Par défaut, toutes les pistes audio sont conservées; c'est ce que l'on voit avec le mappage dans la région en haut à droite de la fenêtre. (Audio 1: Audio 1, Audio 2: Audio 2, ..., Audio 8: Audio 8). Si on ne veut pas conserver des pistes, on associe chacune des pistes à supprimer à Sans audio (avec le menu pop-up à côté des pistes).
 
Dernière édition:
  • J'aime
Réactions: marcus54