logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:slyfox:scripts:accueil [02/08/2018 23:08]
Slyfox [Sylmedia]
utilisateurs:slyfox:scripts:accueil [14/08/2018 17:41]
Slyfox [Script]
Ligne 1: Ligne 1:
 +====== Slymedia ======
  
-====== Sylmedia ====== +  ​* Objet : Script Slymedia
- +
-  ​* Objet : +
   * Niveau requis : {{tag>​débutant}}   * Niveau requis : {{tag>​débutant}}
   * Commentaires : -   * Commentaires : -
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en chantier}} +  * Suivi : {{tag>à-placer}} 
-    * Création par [[user>​Slyfox]] 31/​07/​2018 +
-  * Commentaires sur le forum : +
  
-<note warning>​__**Script en cours d’écriture!**__</​note>​+===== Introduction ===== 
 +Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio.
  
-Installation des paquets: +===== Script ===== 
-<code root>apt-get update +<note important>En cours d'​écriture,​ peut fonctionner que partiellement.</note>
-apt-get install ffmpeg yad flac vorbis-tools eyed3 kid3-cli</code>+
  
-Copier le script ci-dessous dans un fichier et le nommer **slymedia.sh** \\ +<​note ​tip>Version du02.08.2018</​note>​
-Déplacer le fichier **slymedia.sh** dans le dossier **/home** ou a convenance.\\ +
-Avant le premier lancement il faut que le fichier soit exécutable (adapter si nécessaire le chemin du fichier).\\ +
-<code user>​chmod u+x /​$HOME/​slymedia.sh</​code>​ +
- +
-Pour lancer le script:\\ +
- +
-  * Ouvrir un terminal graphique (gnome terminal, terminal mate...) et taper le chemin du fichier **slymedia.sh** (adapter si nécessaire le chemin du fichier).\\ +
- +
-<code user>/​$HOME/​slymedia.sh</​code>​ +
- +
-ou\\ +
- +
-  * Faire un double clic sur le fichier. +
- +
- +
- +
-<​note>​**Version du 02.08.2018**</​note>​ +
- +
-===== Script =====+
  
 <code user>#! /bin/bash <code user>#! /bin/bash
 + 
 # Paquets à installer: ffmpeg yad flac vorbis-tools eyed3 kid3-cli # Paquets à installer: ffmpeg yad flac vorbis-tools eyed3 kid3-cli
 # Version: 20180802 # Version: 20180802
 + 
 #​=========================================================================================================== #​===========================================================================================================
 function YADMAIN() function YADMAIN()
Ligne 68: Ligne 46:
 --button="​Lancer conversion!gtk-convert!:​0"​ \ --button="​Lancer conversion!gtk-convert!:​0"​ \
 "​${cdeYadStream[@]}"​) "​${cdeYadStream[@]}"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 profile=$(awk -F [\|] '​{print $2}' <<<​ "​${yadMain}"​) profile=$(awk -F [\|] '​{print $2}' <<<​ "​${yadMain}"​)
Ligne 109: Ligne 87:
 --button="​gtk-cancel:​2"​ \ --button="​gtk-cancel:​2"​ \
 --button="​gtk-ok:​0"​) --button="​gtk-ok:​0"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 definition=$(awk -F [\|] '​{print $2}' <<<​ "​${yadPreference}"​) definition=$(awk -F [\|] '​{print $2}' <<<​ "​${yadPreference}"​)
Ligne 121: Ligne 99:
 nocopy=$(awk -F [\|] '​{print $20}' <<<​ "​${yadPreference}"​) nocopy=$(awk -F [\|] '​{print $20}' <<<​ "​${yadPreference}"​)
 dirIn=$(awk -F [\|] '​{print $21}' <<<​ "​${yadPreference}"​) dirIn=$(awk -F [\|] '​{print $21}' <<<​ "​${yadPreference}"​)
- +  
 + 
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 128: Ligne 106:
 { {
 IFS=$"​|"​ IFS=$"​|"​
 + 
 yadSource=$(yad --list \ yadSource=$(yad --list \
 --radiolist \ --radiolist \
Ligne 146: Ligne 124:
 "​FALSE"​ "​CD"​ \ "​FALSE"​ "​CD"​ \
 "​FALSE"​ "​DDL"​) "​FALSE"​ "​DDL"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 source=$(awk -F [\|] '/​TRUE/​ {print $2}' <<<​ "​${yadSource}"​) source=$(awk -F [\|] '/​TRUE/​ {print $2}' <<<​ "​${yadSource}"​)
Ligne 170: Ligne 148:
 --button="​gtk-cancel:​2"​ \ --button="​gtk-cancel:​2"​ \
 --button="​gtk-ok:​0"​) --button="​gtk-ok:​0"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
Ligne 180: Ligne 158:
 dirSylmedia="/​home/​$USER/​.slymedia"​ dirSylmedia="/​home/​$USER/​.slymedia"​
 [[ ! -d "​${dirSylmedia}"​ ]] && mkdir "​${dirSylmedia}"​ [[ ! -d "​${dirSylmedia}"​ ]] && mkdir "​${dirSylmedia}"​
 + 
 # Suppression des anciens dossiers temporaires # Suppression des anciens dossiers temporaires
 rm -rf "​${dirSylmedia}"/​tmp* rm -rf "​${dirSylmedia}"/​tmp*
 + 
 # Création du dossier temporaire # Création du dossier temporaire
 dossierTmp="​$(mktemp -d "​${dirSylmedia}/​tmp-XXXXXXXXXXX"​)"​ dossierTmp="​$(mktemp -d "​${dirSylmedia}/​tmp-XXXXXXXXXXX"​)"​
 + 
 # Création du fichier de configurations # Création du fichier de configurations
 fileConfig="​${dirSylmedia}/​config.txt"​ fileConfig="​${dirSylmedia}/​config.txt"​
 + 
 [[ ! -f "​${fileConfig}"​ ]] && CONFIGDEFAUT [[ ! -f "​${fileConfig}"​ ]] && CONFIGDEFAUT
 } }
Ligne 203: Ligne 181:
 # Sauvegarde variables dans fichier de configuaration utilisateur # Sauvegarde variables dans fichier de configuaration utilisateur
 echo -e "​profile=\"​${profile}\"​\nquality=\"​${quality}\"​\ndirOut=\"​${dirOut}\"​\ndefinition=\"​${definition}\"​\nlangAudio=\"​${langAudio}\"​\ntypeRate=\"​${typeRate}\"​\nlangSub=\"​${langSub}\"​\nmetadata=\"​${metadata}\"​\nnocopy=\"​${nocopy}\"​\ndirIn=\"​${dirIn}\""​ > "​${fileConfig}"​ echo -e "​profile=\"​${profile}\"​\nquality=\"​${quality}\"​\ndirOut=\"​${dirOut}\"​\ndefinition=\"​${definition}\"​\nlangAudio=\"​${langAudio}\"​\ntypeRate=\"​${typeRate}\"​\nlangSub=\"​${langSub}\"​\nmetadata=\"​${metadata}\"​\nnocopy=\"​${nocopy}\"​\ndirIn=\"​${dirIn}\""​ > "​${fileConfig}"​
 + 
 echo "​profile:​ ${profile}"​ echo "​profile:​ ${profile}"​
 echo "​quality:​ ${quality}"​ echo "​quality:​ ${quality}"​
Ligne 222: Ligne 200:
  language="​Français"​  language="​Français"​
  languageISO="​fre"​  languageISO="​fre"​
- + 
  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​deu"​ ]] || [[ "​${lang}"​ == "​de"​ ]]; then  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​deu"​ ]] || [[ "​${lang}"​ == "​de"​ ]]; then
  language="​Allemand"​  language="​Allemand"​
  languageISO="​deu"​  languageISO="​deu"​
- + 
  elif [[ "​${lang}"​ == "​eng"​ ]] || [[ "​${lang}"​ == "​en"​ ]]; then  elif [[ "​${lang}"​ == "​eng"​ ]] || [[ "​${lang}"​ == "​en"​ ]]; then
  language="​Anglais"​  language="​Anglais"​
  languageISO="​eng"​  languageISO="​eng"​
-  +  
- + 
  elif [[ "​${lang}"​ == "​ara"​ ]] || [[ "​${lang}"​ == "​ar"​ ]]; then  elif [[ "​${lang}"​ == "​ara"​ ]] || [[ "​${lang}"​ == "​ar"​ ]]; then
  language="​Arabe"​  language="​Arabe"​
  languageISO="​ara"​  languageISO="​ara"​
- + 
  elif [[ "​${lang}"​ == "​bre"​ ]] || [[ "​${lang}"​ == "​br"​ ]]; then  elif [[ "​${lang}"​ == "​bre"​ ]] || [[ "​${lang}"​ == "​br"​ ]]; then
  language="​Breton"​  language="​Breton"​
  languageISO="​bre"​   languageISO="​bre"​
- + 
  elif [[ "​${lang}"​ == "​cat"​ ]] || [[ "​${lang}"​ == "​ca"​ ]]; then  elif [[ "​${lang}"​ == "​cat"​ ]] || [[ "​${lang}"​ == "​ca"​ ]]; then
  language="​Catalan"​  language="​Catalan"​
  languageISO="​cat"​  languageISO="​cat"​
 + 
  elif [[ "​${lang}"​ == "​chi"​ ]] || [[ "​${lang}"​ == "​zho"​ ]] || [[ "​${lang}"​ == "​zh"​ ]]; then  elif [[ "​${lang}"​ == "​chi"​ ]] || [[ "​${lang}"​ == "​zho"​ ]] || [[ "​${lang}"​ == "​zh"​ ]]; then
  language="​Chinois"​  language="​Chinois"​
  languageISO="​chi"​  languageISO="​chi"​
- + 
  elif [[ "​${lang}"​ == "​kor"​ ]] || [[ "​${lang}"​ == "​ko"​ ]]; then  elif [[ "​${lang}"​ == "​kor"​ ]] || [[ "​${lang}"​ == "​ko"​ ]]; then
  language="​Coréen"​  language="​Coréen"​
  languageISO="​kor"​  languageISO="​kor"​
- + 
  elif [[ "​${lang}"​ == "​cos"​ ]] || [[ "​${lang}"​ == "​co"​ ]]; then  elif [[ "​${lang}"​ == "​cos"​ ]] || [[ "​${lang}"​ == "​co"​ ]]; then
  language="​Corse"​  language="​Corse"​
  languageISO="​cos"​  languageISO="​cos"​
- + 
  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then
  language="​Créole_haïtien"​  language="​Créole_haïtien"​
  languageISO="​hat"​  languageISO="​hat"​
- + 
  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then
  language="​Créole_haïtien"​  language="​Créole_haïtien"​
  languageISO="​hat"​  languageISO="​hat"​
- + 
  elif [[ "​${lang}"​ == "​rcf"​ ]] || [[ "​${lang}"​ == "​rc"​ ]]; then  elif [[ "​${lang}"​ == "​rcf"​ ]] || [[ "​${lang}"​ == "​rc"​ ]]; then
  language="​Créole_Réunionnais"​  language="​Créole_Réunionnais"​
  languageISO="​rcf"​  languageISO="​rcf"​
- + 
  elif [[ "​${lang}"​ == "​gla"​ ]] || [[ "​${lang}"​ == "​gd"​ ]]; then  elif [[ "​${lang}"​ == "​gla"​ ]] || [[ "​${lang}"​ == "​gd"​ ]]; then
  language="​Écossais"​  language="​Écossais"​
  languageISO="​gla"​  languageISO="​gla"​
 + 
  elif [[ "​${lang}"​ == "​spa"​ ]] || [[ "​${lang}"​ == "​es"​ ]]; then  elif [[ "​${lang}"​ == "​spa"​ ]] || [[ "​${lang}"​ == "​es"​ ]]; then
  language="​Espagnol"​  language="​Espagnol"​
  languageISO="​spa"​  languageISO="​spa"​
- + 
  elif [[ "​${lang}"​ == "​epo"​ ]] || [[ "​${lang}"​ == "​eo"​ ]]; then  elif [[ "​${lang}"​ == "​epo"​ ]] || [[ "​${lang}"​ == "​eo"​ ]]; then
  language="​Espéranto"​  language="​Espéranto"​
  languageISO="​epo"​  languageISO="​epo"​
 + 
  elif [[ "​${lang}"​ == "​fin"​ ]] || [[ "​${lang}"​ == "​fi"​ ]]; then  elif [[ "​${lang}"​ == "​fin"​ ]] || [[ "​${lang}"​ == "​fi"​ ]]; then
  language="​Finnois"​  language="​Finnois"​
  languageISO="​fin"​  languageISO="​fin"​
- + 
  elif [[ "​${lang}"​ == "​glg"​ ]] || [[ "​${lang}"​ == "​gl"​ ]]; then  elif [[ "​${lang}"​ == "​glg"​ ]] || [[ "​${lang}"​ == "​gl"​ ]]; then
  language="​Galicien"​  language="​Galicien"​
  languageISO="​glg"​  languageISO="​glg"​
-  +  
- + 
  elif [[ "​${lang}"​ == "​wel"​ ]] || [[ "​${lang}"​ == "​cym"​ ]] || [[ "​${lang}"​ == "​cy"​ ]]; then  elif [[ "​${lang}"​ == "​wel"​ ]] || [[ "​${lang}"​ == "​cym"​ ]] || [[ "​${lang}"​ == "​cy"​ ]]; then
  language="​Gallois"​  language="​Gallois"​
  languageISO="​wel"​  languageISO="​wel"​
 + 
  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​ell"​ ]] || [[ "​${lang}"​ == "​el"​ ]]; then  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​ell"​ ]] || [[ "​${lang}"​ == "​el"​ ]]; then
  language="​Grec"​  language="​Grec"​
  languageISO="​gre"​  languageISO="​gre"​
- + 
  elif [[ "​${lang}"​ == "​heb"​ ]] || [[ "​${lang}"​ == "​he"​ ]]; then  elif [[ "​${lang}"​ == "​heb"​ ]] || [[ "​${lang}"​ == "​he"​ ]]; then
  language="​Hébreu"​  language="​Hébreu"​
  languageISO="​heb"​  languageISO="​heb"​
- + 
  elif [[ "​${lang}"​ == "​hin"​ ]] || [[ "​${lang}"​ == "​hi"​ ]]; then  elif [[ "​${lang}"​ == "​hin"​ ]] || [[ "​${lang}"​ == "​hi"​ ]]; then
  language="​Hindi"​  language="​Hindi"​
  languageISO="​hin"​  languageISO="​hin"​
- + 
  elif [[ "​${lang}"​ == "​hun"​ ]] || [[ "​${lang}"​ == "​hu"​ ]]; then  elif [[ "​${lang}"​ == "​hun"​ ]] || [[ "​${lang}"​ == "​hu"​ ]]; then
  language="​Hongrois"​  language="​Hongrois"​
  languageISO="​hun"​  languageISO="​hun"​
- + 
  elif [[ "​${lang}"​ == "​gle"​ ]] || [[ "​${lang}"​ == "​ga"​ ]]; then  elif [[ "​${lang}"​ == "​gle"​ ]] || [[ "​${lang}"​ == "​ga"​ ]]; then
  language="​Irlandais"​  language="​Irlandais"​
  languageISO="​gle"​  languageISO="​gle"​
- + 
  elif [[ "​${lang}"​ == "​ice"​ ]] || [[ "​${lang}"​ == "​isl"​ ]] || [[ "​${lang}"​ == "​is"​ ]]; then  elif [[ "​${lang}"​ == "​ice"​ ]] || [[ "​${lang}"​ == "​isl"​ ]] || [[ "​${lang}"​ == "​is"​ ]]; then
  language="​Islandais"​  language="​Islandais"​
  languageISO="​ice"​   languageISO="​ice"​
 + 
  elif [[ "​${lang}"​ == "​ita"​ ]] || [[ "​${lang}"​ == "​it"​ ]]; then  elif [[ "​${lang}"​ == "​ita"​ ]] || [[ "​${lang}"​ == "​it"​ ]]; then
  language="​Italien"​  language="​Italien"​
  languageISO="​ita"​  languageISO="​ita"​
- + 
  elif [[ "​${lang}"​ == "​jpn"​ ]] || [[ "​${lang}"​ == "​jp"​ ]]; then  elif [[ "​${lang}"​ == "​jpn"​ ]] || [[ "​${lang}"​ == "​jp"​ ]]; then
  language="​Japonais"​  language="​Japonais"​
  languageISO="​jpn"​  languageISO="​jpn"​
- + 
  elif [[ "​${lang}"​ == "​lat"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then  elif [[ "​${lang}"​ == "​lat"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then
  language="​Latin"​  language="​Latin"​
  languageISO="​lat"​  languageISO="​lat"​
 + 
  elif [[ "​${lang}"​ == "​ltz"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then  elif [[ "​${lang}"​ == "​ltz"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then
  language="​Luxembourgeois"​  language="​Luxembourgeois"​
  languageISO="​ltz"​  languageISO="​ltz"​
- + 
  elif [[ "​${lang}"​ == "​dut"​ ]] || [[ "​${lang}"​ == "​nld"​ ]] || [[ "​${lang}"​ == "​lb"​ ]]; then  elif [[ "​${lang}"​ == "​dut"​ ]] || [[ "​${lang}"​ == "​nld"​ ]] || [[ "​${lang}"​ == "​lb"​ ]]; then
  language="​Néerlandais"​  language="​Néerlandais"​
  languageISO="​dut"​  languageISO="​dut"​
- + 
  elif [[ "​${lang}"​ == "​nor"​ ]] || [[ "​${lang}"​ == "​no"​ ]]; then  elif [[ "​${lang}"​ == "​nor"​ ]] || [[ "​${lang}"​ == "​no"​ ]]; then
  language="​Norvégien"​  language="​Norvégien"​
  languageISO="​nor"​  languageISO="​nor"​
- + 
  elif [[ "​${lang}"​ == "​por"​ ]] || [[ "​${lang}"​ == "​pt"​ ]]; then  elif [[ "​${lang}"​ == "​por"​ ]] || [[ "​${lang}"​ == "​pt"​ ]]; then
  language="​Portugais"​  language="​Portugais"​
  languageISO="​por"​  languageISO="​por"​
- + 
  elif [[ "​${lang}"​ == "​roh"​ ]] || [[ "​${lang}"​ == "​rm"​ ]]; then  elif [[ "​${lang}"​ == "​roh"​ ]] || [[ "​${lang}"​ == "​rm"​ ]]; then
  language="​Romanche"​  language="​Romanche"​
  languageISO="​roh"​  languageISO="​roh"​
 + 
  elif [[ "​${lang}"​ == "​rus"​ ]] || [[ "​${lang}"​ == "​ru"​ ]]; then  elif [[ "​${lang}"​ == "​rus"​ ]] || [[ "​${lang}"​ == "​ru"​ ]]; then
  language="​Russe"​  language="​Russe"​
  languageISO="​rus"​  languageISO="​rus"​
 + 
  elif [[ "​${lang}"​ == "​swe"​ ]] || [[ "​${lang}"​ == "​sv"​ ]]; then  elif [[ "​${lang}"​ == "​swe"​ ]] || [[ "​${lang}"​ == "​sv"​ ]]; then
  language="​Suédois"​  language="​Suédois"​
  languageISO="​swe"​  languageISO="​swe"​
 + 
  else  else
  language="​Inconnu"​  language="​Inconnu"​
Ligne 367: Ligne 345:
 [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​ [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​
 cdeYadStream=() cdeYadStream=()
- + 
 IFS=$'​\n'​ IFS=$'​\n'​
 + 
 for i in ${fileIn}; do for i in ${fileIn}; do
  STREAMTITLE  STREAMTITLE
Ligne 376: Ligne 354:
  STREAMSUBTITLE  STREAMSUBTITLE
  cdeYadStream=(${cdeYadStream[@]} --field="​ ":LBL " ")  cdeYadStream=(${cdeYadStream[@]} --field="​ ":LBL " ")
- + 
 done done
 } }
Ligne 384: Ligne 362:
 # Titre et durée # Titre et durée
 streamFormat=$(ffprobe -i "​${i}"​ -hide_banner -v quiet -show_entries format=duration,​bit_rate -of csv=s="​|"​) streamFormat=$(ffprobe -i "​${i}"​ -hide_banner -v quiet -show_entries format=duration,​bit_rate -of csv=s="​|"​)
 + 
 durationS=$(awk -F [\|] '​{print $2}' <<<​ "​${streamFormat}"​) durationS=$(awk -F [\|] '​{print $2}' <<<​ "​${streamFormat}"​)
 durationHMS=$(date -d@"​${durationS}"​ -u +%H:%M:%S) durationHMS=$(date -d@"​${durationS}"​ -u +%H:%M:%S)
 rateTotal=$(awk -F [\|] '​{printf "%d kb/s" ,​($3/​1000)}'​ <<<​ "​${streamFormat}"​) rateTotal=$(awk -F [\|] '​{printf "%d kb/s" ,​($3/​1000)}'​ <<<​ "​${streamFormat}"​)
 + 
 # Mise en mémoire dans tableau cdeYadStream # Mise en mémoire dans tableau cdeYadStream
 cdeYadStream=(${cdeYadStream[@]} --field="<​b>​TITRE:​ $(basename "​${i}"​) - ${durationHMS} - ${rateTotal}</​b>":​LBL " ") cdeYadStream=(${cdeYadStream[@]} --field="<​b>​TITRE:​ $(basename "​${i}"​) - ${durationHMS} - ${rateTotal}</​b>":​LBL " ")
Ligne 396: Ligne 374:
 { {
 streamVideo=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams v -show_entries stream=index,​codec_name,​width,​height,​r_frame_rate -of csv=s="​|"​) streamVideo=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams v -show_entries stream=index,​codec_name,​width,​height,​r_frame_rate -of csv=s="​|"​)
 + 
 while read line; do while read line; do
- + 
  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)
  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)
Ligne 405: Ligne 383:
  fps1=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $1}')  fps1=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $1}')
  fps2=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $2}')  fps2=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $2}')
- + 
  # Vérifiction si fps1 et fps2 sont des valeurs numériques  # Vérifiction si fps1 et fps2 sont des valeurs numériques
- + 
  if [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ = +([0-9]) ]]; then  if [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ = +([0-9]) ]]; then
  fps=$(echo "​${fps1} / ${fps2}"​ | bc -l | awk '​{printf "​%.3f"​ ,$1}')  fps=$(echo "​${fps1} / ${fps2}"​ | bc -l | awk '​{printf "​%.3f"​ ,$1}')
- + 
  elif [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ != +([0-9]) ]]; then  elif [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ != +([0-9]) ]]; then
  fps=$(awk '​{printf "​%d"​ ,$1}' <<<​ "​${fps1}"​)  fps=$(awk '​{printf "​%d"​ ,$1}' <<<​ "​${fps1}"​)
- + 
  else  else
  fps="​N/​A"​  fps="​N/​A"​
  fi  fi
- + 
  # Type d'​image (Front, back, other)  # Type d'​image (Front, back, other)
  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then
- + 
  # Recherche numéro id depuis la map  # Recherche numéro id depuis la map
  id=$(awk -F [\:] '​{print $2}' <<<​ "​0:​${index}"​)  id=$(awk -F [\:] '​{print $2}' <<<​ "​0:​${index}"​)
  typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')  typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
- +  
 + 
  # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau cdeYadStream)  # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau cdeYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
  printf "​|${i}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​  printf "​|${i}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​
  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":​CHK "​TRUE"​)  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":​CHK "​TRUE"​)
- + 
  fi  fi
- + 
  else  else
- + 
  # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau cdeYadStream)  # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau cdeYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
  printf "​|${i}|0:​${index}|VIDEO|${codec}|${width}|${height}|${fps}\n"​ >> "​${dossierTmp}/​stream.txt"​  printf "​|${i}|0:​${index}|VIDEO|${codec}|${width}|${height}|${fps}\n"​ >> "​${dossierTmp}/​stream.txt"​
  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":​CHK "​TRUE"​)  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":​CHK "​TRUE"​)
- + 
  fi  fi
  fi  fi
-  +  
- +  
- + 
 done <<<​ "​${streamVideo}"​ done <<<​ "​${streamVideo}"​
 } }
Ligne 451: Ligne 429:
 { {
 streamAudio=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams a -show_entries stream=index,​codec_name,​sample_rate,​channel_layout,​bit_rate -show_entries stream_tags=language -of csv=s="​|"​) streamAudio=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams a -show_entries stream=index,​codec_name,​sample_rate,​channel_layout,​bit_rate -show_entries stream_tags=language -of csv=s="​|"​)
- + 
  while read line; do  while read line; do
 + 
  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)
  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)
Ligne 460: Ligne 438:
  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)
  #​debitAudio=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​)  #​debitAudio=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​)
 + 
  LANGUE  LANGUE
- + 
  # Affectation TRUE ou FALSE  # Affectation TRUE ou FALSE
  if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then  if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then
  bol="​TRUE"​  bol="​TRUE"​
- + 
  else  else
  bol="​FALSE"​  bol="​FALSE"​
  fi  fi
- + 
  # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau cdeYadStream)  # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau cdeYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
  printf "​|${i}|0:​${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n"​ >> "​${dossierTmp}/​stream.txt"​  printf "​|${i}|0:​${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n"​ >> "​${dossierTmp}/​stream.txt"​
  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":​CHK "​${bol}"​)  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":​CHK "​${bol}"​)
- + 
  fi  fi
- + 
  done <<<​ "​${streamAudio}"​   done <<<​ "​${streamAudio}"​
 } }
Ligne 484: Ligne 462:
 { {
 streamSub=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams s -show_entries stream=index,​codec_name -show_entries stream_tags=language -of csv=s="​|"​) streamSub=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams s -show_entries stream=index,​codec_name -show_entries stream_tags=language -of csv=s="​|"​)
 + 
 while read line; do while read line; do
 + 
  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)
  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)
  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)
 + 
  LANGUE  LANGUE
- + 
  # Affectation TRUE ou FALSE  # Affectation TRUE ou FALSE
  if [[ "​${language}"​ == "​${langSub}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langSub}"​ == "​Toutes les langues"​ ]]; then  if [[ "​${language}"​ == "​${langSub}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langSub}"​ == "​Toutes les langues"​ ]]; then
  bol="​TRUE"​  bol="​TRUE"​
- + 
  else  else
  bol="​FALSE"​  bol="​FALSE"​
  fi  fi
- + 
  # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau cdeYadStream)  # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau cdeYadStream)
- + 
  if [[ "​${index}"​ != ""​ ]]; then   if [[ "​${index}"​ != ""​ ]]; then
  printf "​|${i}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​  printf "​|${i}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​
  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​)  cdeYadStream=(${cdeYadStream[@]} --field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​)
- + 
  fi  fi
- + 
 done <<<​ "​${streamSub}"​ done <<<​ "​${streamSub}"​
 } }
 #​=========================================================================================================== #​===========================================================================================================
 + 
 function PROFIL() function PROFIL()
 { {
Ligne 518: Ligne 496:
  FLAC  FLAC
  conteneur="​flac"​  conteneur="​flac"​
 + 
 elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then
  VORBIS  VORBIS
  conteneur="​ogg"​  conteneur="​ogg"​
 + 
 elif [[ "​${profile}"​ = "Audio aac" ]]; then elif [[ "​${profile}"​ = "Audio aac" ]]; then
  AAC  AAC
  conteneur="​m4a"​  conteneur="​m4a"​
- + 
 elif [[ "​${profile}"​ = "Audio mp3" ]]; then elif [[ "​${profile}"​ = "Audio mp3" ]]; then
  MP3  MP3
  conteneur="​mp3"​  conteneur="​mp3"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - vorbis"​ ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - vorbis"​ ]]; then
  X264  X264
  VORBIS  VORBIS
  conteneur="​mkv"​  conteneur="​mkv"​
 + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - aac" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - aac" ]]; then
  X264  X264
  AAC  AAC
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - mp3" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - mp3" ]]; then
  X264  X264
  MP3  MP3
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - aac" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - aac" ]]; then
  X265  X265
  AAC  AAC
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - mp3" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - mp3" ]]; then
  X265  X265
Ligne 563: Ligne 541:
 if [[ "​${quality}"​ == "​Excellente"​ ]]; then if [[ "​${quality}"​ == "​Excellente"​ ]]; then
  cdeQualityVideo=(${qVideo1[@]})  cdeQualityVideo=(${qVideo1[@]})
- + 
 elif [[ "​${quality}"​ == "​Elevée"​ ]]; then elif [[ "​${quality}"​ == "​Elevée"​ ]]; then
  cdeQualityVideo=(${qVideo2[@]})  cdeQualityVideo=(${qVideo2[@]})
- + 
 elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then
  cdeQualityVideo=(${qVideo3[@]})  cdeQualityVideo=(${qVideo3[@]})
- + 
 elif [[ "​${quality}"​ == "​Minimum"​ ]]; then elif [[ "​${quality}"​ == "​Minimum"​ ]]; then
  cdeQualityVideo=(${qVideo4[@]})  cdeQualityVideo=(${qVideo4[@]})
- + 
 elif [[ "​${quality}"​ == "​Faible"​ ]]; then elif [[ "​${quality}"​ == "​Faible"​ ]]; then
  cdeQualityVideo=(${qVideo5[@]})  cdeQualityVideo=(${qVideo5[@]})
-  + 
-fi +
-+
-#​=========================================================================================================== +
-function QUALITY_AUDIO() +
-+
-# Recherche debit total maximum du fichier source +
-rateTotal=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​ | awk -F [\|] '​{printf "​%d"​ ,​($2/​1000)}'​) +
-  +
-# Commande selon la qualité +
-if [[ "​${cAudio}"​ = "​copy"​ ]] || [[ "​${cAudio}"​ == "​flac"​ ]]; then +
- cdeQualityAudio=() +
- +
-elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then +
- +
- if [[ "​${quality}"​ == "​Excellente"​ ]] && [[ "​${rateTotal}"​ -ge "​320"​ ]]; then +
- cdeQualityAudio=(${qAudio1[@]}) +
- +
- elif [[ "​${quality}"​ == "​Elevée"​ ]] && [[ "​${rateTotal}"​ -ge "​256"​ ]]; then +
- cdeQualityAudio=(${qAudio2[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Moyenne"​ ]] && [[ "​${rateTotal}"​ -ge "​192"​ ]]; then +
- cdeQualityAudio=(${qAudio3[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Minimum"​ ]] && [[ "​${rateTotal}"​ -ge "​128"​ ]]; then +
- cdeQualityAudio=(${qAudio4[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Faible"​ ]] && [[ "​${rateTotal}"​ -ge "​64"​ ]]; then +
- cdeQualityAudio=(${qAudio5[@]}) +
-  +
- else +
-  +
- if [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then +
- cAudio="​copy"​ +
- cdeQualityAudio=() +
- +
- else +
- cdeQualityAudio=(-b:​a "​${rateTotal}k"​) +
-  +
- fi +
- +
- fi +
-  +
-elif [[ "​${typeRate}"​ == "​VBR"​ ]]; then +
- +
- if [[ "​${quality}"​ == "​Excellente"​ ]]; then +
- cdeQualityAudio=(${qAudio1[@]}) +
- +
- elif [[ "​${quality}"​ == "​Elevée"​ ]]; then +
- cdeQualityAudio=(${qAudio2[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then +
- cdeQualityAudio=(${qAudio3[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Minimum"​ ]]; then +
- cdeQualityAudio=(${qAudio4[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Faible"​ ]]; then +
- cdeQualityAudio=(${qAudio5[@]}) +
-  +
- fi+
 fi fi
 } }
Ligne 645: Ligne 563:
 else else
  cVideo="​libx265"​  cVideo="​libx265"​
- + 
  qVideo1=(-crf 18 -preset slow)  qVideo1=(-crf 18 -preset slow)
  qVideo2=(-crf 24 -preset slow)  qVideo2=(-crf 24 -preset slow)
Ligne 652: Ligne 570:
  qVideo5=(-crf 42 -preset ultrafast)   qVideo5=(-crf 42 -preset ultrafast)
 fi fi
- +  
 + 
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 662: Ligne 580:
 else else
  cVideo="​libx264"​  cVideo="​libx264"​
 + 
  qVideo1=(-crf 18 -preset slow)  qVideo1=(-crf 18 -preset slow)
  qVideo2=(-crf 24 -preset slow)  qVideo2=(-crf 24 -preset slow)
Ligne 668: Ligne 586:
  qVideo4=(-crf 36 -preset veryfast)  qVideo4=(-crf 36 -preset veryfast)
  qVideo5=(-crf 42 -preset ultrafast)  qVideo5=(-crf 42 -preset ultrafast)
 + 
 fi  fi
 } }
Ligne 676: Ligne 594:
 if [[ "​${codecAudioIn}"​ = "​flac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​flac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  cAudio="​flac"​  cAudio="​flac"​
Ligne 686: Ligne 604:
 if [[ "​${codecAudioIn}"​ = "​vorbis"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​vorbis"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​vorbis"​  codecAudioOut="​vorbis"​
  cAudio="​libvorbis"​  cAudio="​libvorbis"​
- + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-qscale:​a 10)  qAudio1=(-qscale:​a 10)
Ligne 697: Ligne 615:
  qAudio4=(-qscale:​a 4)  qAudio4=(-qscale:​a 4)
  qAudio5=(-qscale:​a 0)  qAudio5=(-qscale:​a 0)
 + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
Ligne 705: Ligne 623:
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
  fi  fi
 + 
 fi  fi
 } }
Ligne 713: Ligne 631:
 if [[ "​${codecAudioIn}"​ = "​aac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​aac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​aac"​  codecAudioOut="​aac"​
  cAudio="​aac"​  cAudio="​aac"​
 + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-q:​a 0)  qAudio1=(-q:​a 0)
Ligne 724: Ligne 642:
  qAudio4=(-q:​a 7)  qAudio4=(-q:​a 7)
  qAudio5=(-q:​a 9)  qAudio5=(-q:​a 9)
 + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
Ligne 732: Ligne 650:
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
  fi  fi
 + 
 fi fi
 } }
Ligne 740: Ligne 658:
 if [[ "​${codecAudioIn}"​ = "​mp3"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​mp3"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​mp3"​  codecAudioOut="​mp3"​
  cAudio="​libmp3lame"​  cAudio="​libmp3lame"​
 + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-q:​a 0)  qAudio1=(-q:​a 0)
Ligne 751: Ligne 669:
  qAudio4=(-q:​a 7)  qAudio4=(-q:​a 7)
  qAudio5=(-q:​a 9)  qAudio5=(-q:​a 9)
- + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
Ligne 765: Ligne 683:
 { {
 IFS=$'​\n'​ IFS=$'​\n'​
 + 
 for iFileIn in ${fileIn}; do for iFileIn in ${fileIn}; do
- + 
  # Initialisation commandes  # Initialisation commandes
  cdeVideo=()  cdeVideo=()
  cdeAudio=()  cdeAudio=()
  cdeSub=()  cdeSub=()
- + 
  # Nom fichier source  # Nom fichier source
  fileNameExtension=$(basename "​${iFileIn}"​)  fileNameExtension=$(basename "​${iFileIn}"​)
  fileName="​${fileNameExtension%.*}"​  fileName="​${fileNameExtension%.*}"​
  extension="​${fileNameExtension##​*.}"​  extension="​${fileNameExtension##​*.}"​
- + 
  # Recherche map  # Recherche map
  mapVideo=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)  mapVideo=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)
  mapAudio=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)  mapAudio=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)
  mapSub=$(awk -F [\|] '{if ($4 ~ /SUBTITLE/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)  mapSub=$(awk -F [\|] '{if ($4 ~ /SUBTITLE/ && /'​${fileName}'/​) {printf "​%s\n"​ ,$3}}' <<<​ "​${stream}"​)
- + 
  echo "​=============================================="​  echo "​=============================================="​
  echo " ​ iFileIn: ${iFileIn}"​  echo " ​ iFileIn: ${iFileIn}"​
Ligne 789: Ligne 707:
  echo " mapAudio: ${mapAudio}"​  echo " mapAudio: ${mapAudio}"​
  echo " ​  ​mapSub:​ ${mapSub}"​  echo " ​  ​mapSub:​ ${mapSub}"​
- + 
  # Metadonnée  # Metadonnée
  if [[ "​${metadata}"​ == "​TRUE"​ ]]; then  if [[ "​${metadata}"​ == "​TRUE"​ ]]; then
Ligne 796: Ligne 714:
  cdeMetadata=()  cdeMetadata=()
  fi  fi
- + 
  FFMPEG_VIDEO  FFMPEG_VIDEO
  FFMPEG_AUDIO  FFMPEG_AUDIO
  FFMPEG_OUT  FFMPEG_OUT
-  + 
-  +
- +
  # Conversion fichier  # Conversion fichier
  ffmpeg -y -i "​${iFileIn}"​ -loglevel debug "​${cdeMetadata[@]}"​ "​${cdeVideo[@]}"​ "​${cdeAudio[@]}"​ "​${dirOut}/​${fileName}.${conteneur}"​  ffmpeg -y -i "​${iFileIn}"​ -loglevel debug "​${cdeMetadata[@]}"​ "​${cdeVideo[@]}"​ "​${cdeAudio[@]}"​ "​${dirOut}/​${fileName}.${conteneur}"​
-  
  ffmpeg -i "​${dirOut}/​${fileName}.${conteneur}"​ ## TEST ##  ffmpeg -i "​${dirOut}/​${fileName}.${conteneur}"​ ## TEST ##
- echo "​ffmpeg -y -i "${iFileIn}" "${cdeMetadata[@]}" "${cdeVideo[@]}" "${cdeAudio[@]}" "${dirOut}/​${fileName}.${conteneur}"" ## TEST ## + echo "​ffmpeg -y -i ${iFileIn} ${cdeMetadata[@]} ${cdeVideo[@]} ${cdeAudio[@]} ${dirOut}/​${fileName}.${conteneur} ​-------- ${rateTotal}" ## TEST ## 
- + 
  # Image cover fichier audio  # Image cover fichier audio
  for iMapVideo in ${mapVideo};​ do  for iMapVideo in ${mapVideo};​ do
- + 
  numImage="​1"​  numImage="​1"​
 + 
  # Recherche codec vidéo (image)  # Recherche codec vidéo (image)
  codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${iMapVideo}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)  codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${iMapVideo}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)
 + 
  if [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] || [[ "​${codecVideoIn}"​ == "​png"​ ]]; then  if [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] || [[ "​${codecVideoIn}"​ == "​png"​ ]]; then
- + 
  COVER  COVER
  fi  fi
- + 
  done  done
- + 
 done done
 } }
 + 
 #​=========================================================================================================== #​===========================================================================================================
 function FFMPEG_VIDEO() function FFMPEG_VIDEO()
 { {
 numFile=""​ numFile=""​
 + 
 for iMapVideo in ${mapVideo};​ do for iMapVideo in ${mapVideo};​ do
 + 
  codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${iMapVideo}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)  codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'​${iMapVideo}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)
- + 
  PROFIL  PROFIL
  QUALITY_VIDEO  QUALITY_VIDEO
- + 
  if [[ "​${profile}"​ = "Audio FLAC" ]] || [[ "​${profile}"​ = "Audio vorbis"​ ]] || [[ "​${profile}"​ = "Audio aac" ]] || [[ "​${profile}"​ = "Audio mp3" ]]; then  if [[ "​${profile}"​ = "Audio FLAC" ]] || [[ "​${profile}"​ = "Audio vorbis"​ ]] || [[ "​${profile}"​ = "Audio aac" ]] || [[ "​${profile}"​ = "Audio mp3" ]]; then
  cdeVideo=(-vn)  cdeVideo=(-vn)
 + 
  else  else
  cdeVideo=(${cdeVideo[@]} -map ${iMapVideo} -c:v ${cVideo} ${cdeQualityVideo[@]})  cdeVideo=(${cdeVideo[@]} -map ${iMapVideo} -c:v ${cVideo} ${cdeQualityVideo[@]})
 + 
  fi  fi
- + 
  echo "​cdeVideo:​ ${cdeVideo[@]}"​  echo "​cdeVideo:​ ${cdeVideo[@]}"​
 + 
 done done
 } }
 +
 #​=========================================================================================================== #​===========================================================================================================
 function FFMPEG_AUDIO() function FFMPEG_AUDIO()
 { {
 numAudio="​0"​ numAudio="​0"​
 + 
 for iMapAudio in ${mapAudio};​ do for iMapAudio in ${mapAudio};​ do
 + 
  codecAudioIn=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && /'​${iMapAudio}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)  codecAudioIn=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && /'​${iMapAudio}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)
  languageISO=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && $3 ~ /'​${iMapAudio}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$7}}' <<<​ "​${stream}"​)  languageISO=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && $3 ~ /'​${iMapAudio}'/​ && /'​${fileName}'/​) {printf "​%s"​ ,$7}}' <<<​ "​${stream}"​)
- + 
  PROFIL  PROFIL
  QUALITY_AUDIO  QUALITY_AUDIO
   
 +
 +
 + #​cdeQualityAudio=(-b:​a "​${rateTotal}k"​) ## TEST
 +
 +
 +
 +
 + 
  cdeAudio=(${cdeAudio[@]} -map ${iMapAudio} -metadata:​s:​a:​${numAudio} language="​${languageISO}"​ -c:a ${cAudio} ${cdeQualityAudio[@]} ${channel[@]} -cutoff 20000)  cdeAudio=(${cdeAudio[@]} -map ${iMapAudio} -metadata:​s:​a:​${numAudio} language="​${languageISO}"​ -c:a ${cAudio} ${cdeQualityAudio[@]} ${channel[@]} -cutoff 20000)
  ((numAudio+=1))  ((numAudio+=1))
 + 
 done done
 } }
 #​=========================================================================================================== #​===========================================================================================================
-function ​FFMPEG_OUT()+function ​QUALITY_AUDIO()
 { {
 +# Recherche debit total maximum du fichier source
 +rateTotal=$(ffprobe -i "​${iFileIn}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​ | awk -F [\|] '​{printf "​%d\n"​ ,​($2/​1000)}'​)
  
 +# Commande selon la qualité
 +if [[ "​${cAudio}"​ = "​copy"​ ]] || [[ "​${cAudio}"​ == "​flac"​ ]]; then
 + cdeQualityAudio=()
 + 
 +elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
 + 
 + if [[ "​${quality}"​ == "​Excellente"​ ]] && [[ "​${rateTotal}"​ -gt "​320"​ ]]; then
 + cdeQualityAudio=(${qAudio1[@]})
 + 
 + elif [[ "​${quality}"​ == "​Elevée"​ ]] && [[ "​${rateTotal}"​ -gt "​256"​ ]]; then
 + cdeQualityAudio=(${qAudio2[@]})
 + 
 + elif [[ "​${quality}"​ == "​Moyenne"​ ]] && [[ "​${rateTotal}"​ -gt "​192"​ ]]; then
 + cdeQualityAudio=(${qAudio3[@]})
 + 
 + elif [[ "​${quality}"​ == "​Minimum"​ ]] && [[ "​${rateTotal}"​ -gt "​128"​ ]]; then
 + cdeQualityAudio=(${qAudio4[@]})
 + 
 + elif [[ "​${quality}"​ == "​Faible"​ ]] && [[ "​${rateTotal}"​ -gt "​64"​ ]]; then
 + cdeQualityAudio=(${qAudio5[@]})
 + 
 + else
 + 
 + if [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + 
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 + 
 + fi
 + 
 +elif [[ "​${typeRate}"​ == "​VBR"​ ]]; then
 + 
 + if [[ "​${quality}"​ == "​Excellente"​ ]]; then
 + cdeQualityAudio=(${qAudio1[@]})
 + 
 + elif [[ "​${quality}"​ == "​Elevée"​ ]]; then
 + cdeQualityAudio=(${qAudio2[@]})
 + 
 + elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then
 + cdeQualityAudio=(${qAudio3[@]})
 + 
 + elif [[ "​${quality}"​ == "​Minimum"​ ]]; then
 + cdeQualityAudio=(${qAudio4[@]})
 + 
 + elif [[ "​${quality}"​ == "​Faible"​ ]]; then
 + cdeQualityAudio=(${qAudio5[@]})
 + 
 + fi
 +fi
  
 +
 +#​cdeQualityAudio=(-b:​a "​${rateTotal}k"​) ## TEST
 +
 +
 + echo "​typeRate:​ ${typeRate}"​ ## TEST
 + echo "​rateTotal:​ ${rateTotal}"​ ## TEST
 + echo "​quality:​ ${quality}"​ ## TEST
 + echo "​cdeQualityAudio:​ ${cdeQualityAudio[@]}"​ ## TEST
 +}
 +#​===========================================================================================================
 +function FFMPEG_OUT()
 +{
 + 
 + 
 # Si fichier exsite déjà ajoute "​copie"​ et numéro de la copie # Si fichier exsite déjà ajoute "​copie"​ et numéro de la copie
 nbrCopie="​1"​ nbrCopie="​1"​
- + 
 while [[ -f "​${dirOut}/​${fileName}.${conteneur}"​ ]]; do while [[ -f "​${dirOut}/​${fileName}.${conteneur}"​ ]]; do
  fileName=$(awk '​{gsub(/​ - copie.*/, ""​);​ printf "%s - copie '​$nbrCopie'"​ ,$0}' <<<​ "​${fileName}"​)  fileName=$(awk '​{gsub(/​ - copie.*/, ""​);​ printf "%s - copie '​$nbrCopie'"​ ,$0}' <<<​ "​${fileName}"​)
Ligne 882: Ligne 874:
 done done
 } }
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
 #​=========================================================================================================== #​===========================================================================================================
 function COVER() function COVER()
Ligne 898: Ligne 879:
 # Si codecVideoIn = mjpeg --> jpeg # Si codecVideoIn = mjpeg --> jpeg
 [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] && codecVideoIn="​jpeg"​ [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] && codecVideoIn="​jpeg"​
 + 
 # Recherche numéro id depuis la map # Recherche numéro id depuis la map
 id=$(awk -F [\:] '​{print $2}' <<<​ "​${iMapVideo}"​) id=$(awk -F [\:] '​{print $2}' <<<​ "​${iMapVideo}"​)
 + 
 # Type d'​image (Front, back, other) # Type d'​image (Front, back, other)
 typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}') typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 # Nom image cover # Nom image cover
 nameImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=title -of csv=s="​|"​ | awk -F [\|] '​{print $2}') nameImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=title -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 if [[ "​${nameImage}"​ == ""​ ]]; then  if [[ "​${nameImage}"​ == ""​ ]]; then 
  #​nameImage="​cover_${typeImage}"​  #​nameImage="​cover_${typeImage}"​
-  +  
- + 
  if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then  if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  nameImage="​Cover front"  nameImage="​Cover front"
 + 
  elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then  elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  nameImage="​Cover back"  nameImage="​Cover back"
 + 
  else [[ "​${typeImage}"​ == "​Other"​ ]]  else [[ "​${typeImage}"​ == "​Other"​ ]]
  nameImage="​Other"​  nameImage="​Other"​
- + 
  fi  fi
 + 
 elif [[ "​${nameImage}"​ == "​${nameImageSave}"​ ]]; then elif [[ "​${nameImage}"​ == "​${nameImageSave}"​ ]]; then
  nameImage="​${nameImage}_${numImage}"​  nameImage="​${nameImage}_${numImage}"​
- + 
 fi fi
 + 
 # Sauvegarde du nom de l'​image # Sauvegarde du nom de l'​image
 nameImageSave="​${numImage}"​ nameImageSave="​${numImage}"​
 ((numImage+=1)) ((numImage+=1))
 + 
 # Extraction image du fichier source # Extraction image du fichier source
 ffmpeg -y -i "​${iFileIn}"​ -map ${iMapVideo} -an "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ ffmpeg -y -i "​${iFileIn}"​ -map ${iMapVideo} -an "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​
 + 
 # Image cover pour fichier audio flac # Image cover pour fichier audio flac
 if [[ "​${profile}"​ = "Audio FLAC" ]]; then if [[ "​${profile}"​ = "Audio FLAC" ]]; then
  COVER_FLAC  COVER_FLAC
 + 
 # Image cover pour fichier audio vorbis # Image cover pour fichier audio vorbis
 elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then
  COVER_OGG  COVER_OGG
 + 
 # Image cover pour fichier audio mp3 # Image cover pour fichier audio mp3
 elif [[ "​${profile}"​ = "Audio mp3" ]]; then elif [[ "​${profile}"​ = "Audio mp3" ]]; then
  COVER_MP3  COVER_MP3
 + 
 # Image cover pour fichier audio aac # Image cover pour fichier audio aac
 elif [[ "​${profile}"​ = "Audio aac" ]]; then elif [[ "​${profile}"​ = "Audio aac" ]]; then
  COVER_OTHER  COVER_OTHER
 fi fi
- +  
 + 
 echo "=== COVER ===" echo "=== COVER ==="
 echo "id: ${id}" echo "id: ${id}"
Ligne 961: Ligne 942:
 function COVER_FLAC() function COVER_FLAC()
 { {
 + 
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​3"​  typeImage="​3"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​4"​  typeImage="​4"​
- +  
 + 
 else [[ "​${typeImage}"​ == "​Other"​ ]] else [[ "​${typeImage}"​ == "​Other"​ ]]
  typeImage="​0"​  typeImage="​0"​
- +  
- +  
 + 
 fi fi
 + 
 # Ajout de l'​image au fichier audio # Ajout de l'​image au fichier audio
 metaflac --import-picture-from="​${typeImage}||${nameImage}||${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dirOut}/​${fileName}.${conteneur}"​ metaflac --import-picture-from="​${typeImage}||${nameImage}||${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dirOut}/​${fileName}.${conteneur}"​
 + 
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function COVER_OGG() function COVER_OGG()
 { {
 + 
 # Type d'​image (Front, back, other) # Type d'​image (Front, back, other)
 typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}') typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​3"​  typeImage="​3"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​4"​  typeImage="​4"​
 + 
 elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then
  typeImage="​8"​  typeImage="​8"​
- + 
 elif [[ "​${typeImage}"​ == "​Other"​ ]]; then elif [[ "​${typeImage}"​ == "​Other"​ ]]; then
  typeImage="​0"​   typeImage="​0"​
- + 
 else else
  typeImage="​3"​  typeImage="​3"​
 + 
 fi fi
 + 
 # Sauvegarde données exsistantes du fichier source # Sauvegarde données exsistantes du fichier source
 vorbiscomment --list --raw "​${dirOut}/​out.${conteneur}"​ > "​${dossierTmp}/​fileSaveOgg.txt"​ vorbiscomment --list --raw "​${dirOut}/​out.${conteneur}"​ > "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 #​Suppression image exsistante #​Suppression image exsistante
 #sed -i -e '/​^metadata_block_picture/​d'​ "​${dossierTmp}/​fileSaveOgg.txt"​ #sed -i -e '/​^metadata_block_picture/​d'​ "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 # Metadata_block_picture format # Metadata_block_picture format
 #Lien: https://​xiph.org/​flac/​format.html#​metadata_block_picture #Lien: https://​xiph.org/​flac/​format.html#​metadata_block_picture
 imageMimeType=$(file -b --mime-type "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​) imageMimeType=$(file -b --mime-type "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​)
 + 
 printf "0: %.8x" "​${typeImage}"​ | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" "​${typeImage}"​ | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 printf "0: %.8x" $(echo -n "​${imageMimeType}"​ | wc -c) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" $(echo -n "​${imageMimeType}"​ | wc -c) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
Ligne 1024: Ligne 1005:
 printf "0: %.8x" 0 | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" 0 | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 printf "0: %.8x" $(wc -c "​${dossierTmp}/​cover.${codecVideoIn}"​ | cut --delimiter='​ ' --fields=1) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" $(wc -c "​${dossierTmp}/​cover.${codecVideoIn}"​ | cut --delimiter='​ ' --fields=1) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 + 
 #Image file #Image file
 cat "​${dossierTmp}/​cover.${codecVideoIn}"​ >> "​${dossierTmp}/​dataImage.txt"​ cat "​${dossierTmp}/​cover.${codecVideoIn}"​ >> "​${dossierTmp}/​dataImage.txt"​
 + 
 echo "​metadata_block_picture=$(base64 --wrap=0 < "​${dossierTmp}/​dataImage.txt"​)"​ >> "​${dossierTmp}/​fileSaveOgg.txt"​ echo "​metadata_block_picture=$(base64 --wrap=0 < "​${dossierTmp}/​dataImage.txt"​)"​ >> "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 #Update vorbis file comments #Update vorbis file comments
 vorbiscomment --write --raw --commentfile "​${dossierTmp}/​fileSaveOgg.txt"​ "​${dirOut}/​${fileName}.${conteneur}"​ vorbiscomment --write --raw --commentfile "​${dossierTmp}/​fileSaveOgg.txt"​ "​${dirOut}/​${fileName}.${conteneur}"​
 + 
 #Delete temp files #Delete temp files
 rm "​${dossierTmp}/​dataImage.txt"​ rm "​${dossierTmp}/​dataImage.txt"​
Ligne 1042: Ligne 1023:
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​FRONT_COVER"​  typeImage="​FRONT_COVER"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​BACK_COVER"​  typeImage="​BACK_COVER"​
 + 
 elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then
  typeImage="​ARTIST"​  typeImage="​ARTIST"​
- + 
 elif [[ "​${typeImage}"​ == "​Other"​ ]]; then elif [[ "​${typeImage}"​ == "​Other"​ ]]; then
  typeImage="​OTHER"​  typeImage="​OTHER"​
 + 
 else else
  typeImage="​FRONT_COVER"​  typeImage="​FRONT_COVER"​
 + 
 fi fi
 + 
 # Ajout de l'​image au fichier audio # Ajout de l'​image au fichier audio
 eyeD3 --add-image="​${dossierTmp}/​${nameImage}.${codecVideoIn}":"​${typeImage}":"​${nameImage}"​ "​${dirOut}/​${fileName}.${conteneur}"​ eyeD3 --add-image="​${dossierTmp}/​${nameImage}.${codecVideoIn}":"​${typeImage}":"​${nameImage}"​ "​${dirOut}/​${fileName}.${conteneur}"​
Ligne 1064: Ligne 1045:
 { {
 if [[ "​${typeImage}"​ == "Cover \(back\)"​ ]]; then if [[ "​${typeImage}"​ == "Cover \(back\)"​ ]]; then
 + 
  # renommage image cover en "​cover"​  # renommage image cover en "​cover"​
  mv "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dossierTmp}/​cover.${codecVideoIn}"​  mv "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dossierTmp}/​cover.${codecVideoIn}"​
 + 
  # Ajout de l'​image au fichier audio  # Ajout de l'​image au fichier audio
  kid3-cli -c "set picture:"​${dossierTmp}/​cover.${codecVideoIn}"​ ''"​ "​${dirOut}/​${fileName}.${conteneur}"​  kid3-cli -c "set picture:"​${dossierTmp}/​cover.${codecVideoIn}"​ ''"​ "​${dirOut}/​${fileName}.${conteneur}"​
 + 
 fi fi
 } }
 + 
 #​=========================================================================================================== #​===========================================================================================================
 function MAIN() function MAIN()
Ligne 1079: Ligne 1060:
 # Chargement fichier de configurations # Chargement fichier de configurations
 . "​${fileConfig}"​ . "​${fileConfig}"​
 + 
 YADMAIN YADMAIN
 + 
 # Si aucune source sélectionnée # Si aucune source sélectionnée
 if [[ "​${status}"​ -eq "​0"​ ]] && [[ "​${fileIn}"​ == ""​ ]]; then if [[ "​${status}"​ -eq "​0"​ ]] && [[ "​${fileIn}"​ == ""​ ]]; then
  status="​4"​  status="​4"​
 fi fi
 + 
 # YADMAIN Bouton "​Quitter"​ ou "Croix fenêtre"​ # YADMAIN Bouton "​Quitter"​ ou "Croix fenêtre"​
 if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
 # YADMAIN Bouton "​Configuration par défaut"​ # YADMAIN Bouton "​Configuration par défaut"​
 elif [[ "​${status}"​ -eq "​3"​ ]]; then elif [[ "​${status}"​ -eq "​3"​ ]]; then
Ligne 1097: Ligne 1078:
  CONFIGDEFAUT  CONFIGDEFAUT
  MAIN  MAIN
 + 
 # YADMAIN Bouton "​Préférences"​ # YADMAIN Bouton "​Préférences"​
 elif [[ "​${status}"​ -eq "​2"​ ]]; then elif [[ "​${status}"​ -eq "​2"​ ]]; then
  SAVE  SAVE
  YADPREFERENCE  YADPREFERENCE
- + 
  # YADPREFERENCE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADPREFERENCE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADPREFERENCE Bouton "​Annuler"​  # YADPREFERENCE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- + 
  # YADPREFERENCE Bouton "​Valider"​  # YADPREFERENCE Bouton "​Valider"​
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
Ligne 1117: Ligne 1098:
  #STREAM  #STREAM
  MAIN  MAIN
- + 
  fi  fi
 + 
 # YADMAIN Bouton "​Source"​ ou aucune source sélectionnée # YADMAIN Bouton "​Source"​ ou aucune source sélectionnée
 elif [[ "​${status}"​ -eq "​4"​ ]]; then elif [[ "​${status}"​ -eq "​4"​ ]]; then
  SAVE  SAVE
  YADSOURCE  YADSOURCE
- + 
  # YADSOURCE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADSOURCE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADSOURCE Bouton "​Annuler"​  # YADSOURCE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- + 
  # YADSOURCE choix "​Fichier"​  # YADSOURCE choix "​Fichier"​
  elif [[ "​${source}"​ == "​Fichier"​ ]]; then  elif [[ "​${source}"​ == "​Fichier"​ ]]; then
  YADFILE  YADFILE
- + 
  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADFILE Bouton "​Annuler"​  # YADFILE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- + 
  # YADFILE Bouton "​Valider"​  # YADFILE Bouton "​Valider"​
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
Ligne 1152: Ligne 1133:
  MAIN  MAIN
  fi  fi
 + 
  # YADSOURCE choix "​DVD"​  # YADSOURCE choix "​DVD"​
  elif [[ "​${source}"​ == "​DVD"​ ]]; then  elif [[ "​${source}"​ == "​DVD"​ ]]; then
  echo "​Source DVD à finir"  echo "​Source DVD à finir"
- + 
  # YADSOURCE choix "​CD"​  # YADSOURCE choix "​CD"​
  elif [[ "​${source}"​ == "​CD"​ ]]; then  elif [[ "​${source}"​ == "​CD"​ ]]; then
  echo "​Source CD à finir"  echo "​Source CD à finir"
- + 
  # YADSOURCE choix "​DDL"​  # YADSOURCE choix "​DDL"​
  elif [[ "​${source}"​ == "​DDL"​ ]]; then  elif [[ "​${source}"​ == "​DDL"​ ]]; then
  echo "​Source DDL à finir"  echo "​Source DDL à finir"
 + 
  fi  fi
 + 
 # YADMAIN Bouton "​Lancer conversion"​ # YADMAIN Bouton "​Lancer conversion"​
 elif [[ "​${status}"​ -eq "​0"​ ]]; then elif [[ "​${status}"​ -eq "​0"​ ]]; then
  SAVE  SAVE
- + 
  # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt  # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt
  IFS=$"​|"​  IFS=$"​|"​
Ligne 1180: Ligne 1161:
  ((numLine+=1))  ((numLine+=1))
  done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}')  done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}')
- + 
  SAVE  SAVE
  FFMPEG  FFMPEG
  MAIN  MAIN
- + 
 fi fi
 } }

Pied de page des forums

Propulsé par FluxBB