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 [14/08/2018 17:38]
Slyfox [Slymedia]
utilisateurs:slyfox:scripts:accueil [07/08/2020 17:40]
Slyfox supprimée
Ligne 5: Ligne 5:
   * 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>à-placer}} +  ​* Création par [[user>​Slyfox]] 14.08.2018 
 +  ​* Suivi : {{tag>À compléter}} 
  
-===== Script ​=====+===== Introduction ​===== 
 +Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio.
  
-<​note ​warning>En cours d'​écriture,​ peut fonctionner que partiellement ​!</​note>​+===== Installation ===== 
 + 
 +Paquets pour le fonctionne du script: 
 + 
 +<code root>apt update</​code>​ 
 +<code root>apt install aptitude</​code>​ 
 +<code root>​aptitude install ffmpeg yad flac vorbis-tools eyed3 kid3-cli</​code>​ 
 +<code root>apt upgrade</​code>​ 
 +===== Script ===== 
 +<​note ​important>En cours d'​écriture,​ peut fonctionner que partiellement.</​note>​
  
-<note tip>​Version du: 02.08.2018</​note>​+<note tip>​Version du: 17.08.2018</​note>​
  
 <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: ​20180817
    
 #​=========================================================================================================== #​===========================================================================================================
Ligne 43: Ligne 54:
 --button="​Source!gtk-file!:​4"​ \ --button="​Source!gtk-file!:​4"​ \
 --button="​Lancer conversion!gtk-convert!:​0"​ \ --button="​Lancer conversion!gtk-convert!:​0"​ \
-"${cdeYadStream[@]}")+"${TabYadStream[@]}")
    
 # Status de sortie Yad # Status de sortie Yad
Ligne 79: Ligne 90:
 --field="​ ":LBL " " \ --field="​ ":LBL " " \
 --field="<​b>​Options</​b>":​LBL " " \ --field="<​b>​Options</​b>":​LBL " " \
---field="​Supprimer ​toutes ​les métadonnées":CHK "​${metadata}"​ \+--field="​Supprimer ​tous les tags et images cover":CHK "​${metadata}"​ \
 --field="​Ne pas encoder si même codec que l'​original":​CHK "​${nocopy}"​ \ --field="​Ne pas encoder si même codec que l'​original":​CHK "​${nocopy}"​ \
 --field="​Dossier source":​DIR "​${dirIn}"​ \ --field="​Dossier source":​DIR "​${dirIn}"​ \
Ligne 97: Ligne 108:
 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 118: Ligne 127:
 --column=""​ \ --column=""​ \
 --column="​Type de source"​ \ --column="​Type de source"​ \
 +"​FALSE"​ "​Fichier avec analyse"​ \
 "​TRUE"​ "​Fichier"​ \ "​TRUE"​ "​Fichier"​ \
 "​FALSE"​ "​DVD"​ \ "​FALSE"​ "​DVD"​ \
Ligne 149: Ligne 159:
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 +}
 +#​===========================================================================================================
 +function YADPROGRESS()
 +{
 +yad --progress \
 +--title "​SlyEditImage ${version}"​ \
 +--geometry="​550x300"​ \
 +--borders="​25"​ \
 +--auto-close \
 +--auto-kill \
 +--button="​gtk-media-stop:​1"​
 +
 +yadStatus="​$?"​
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 339: Ligne 362:
 } }
 #​=========================================================================================================== #​===========================================================================================================
-function ​STREAM()+function ​STREAM_SIMPLE()
 { {
 +
 [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​ [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​
-cdeYadStream=() +TabYadStream=()
- +
 IFS=$'​\n'​ IFS=$'​\n'​
- + 
 + 
 +# Initialisation 
 +nbr="​0"​ 
 +pourcent="​0"​ 
 +timeGo="​$(date +%s)"​ 
 + 
 +# Nombre de fichier 
 +nbrFichier=$(awk '/./ {print}'​ <<<​ "​${fileIn}"​ | wc -l) 
 + 
 +# Calcul le pourcent par fichier 
 +pourcentFichier=$(echo "​scale=15;​ 100/​${nbrFichier}"​ | bc) 
 + 
 for i in ${fileIn}; do for i in ${fileIn}; do
 +
 +# Titre et durée
 +#​streamFormat=$(ffprobe -i "​${i}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​)
 +#​rateTotal=$(ffmpeg -y -i "​${i}"​ 2>&1 | awk '/​Duration:/​ {printf "​%s\n"​ ,​$(NF-1)}'​)
 + 
 +# Mise en mémoire dans tableau TabYadStream
 +TabYadStream=(${TabYadStream[@]} --field="<​b>​TITRE:</​b>​ $(basename "​${i}"​)":​LBL " ")
 +
 +
 +
 + # Nom du fichier
 + fileNameExt=$(basename "​${i}"​)
 + fileName="​${fileNameExt%.*}"​
 +
 + # Envoi données vers YADPROGRESS
 + pourcent=$(echo "​scale=15;​ (${pourcent}+${pourcentFichier})"​ | bc) 
 +
 + ((nbr+=1))
 +
 + # Calcul temps restant
 + timeT="​$(date +%s)"
 + timeRemainingS=$(echo "​scale=15;​ ((${timeT}-${timeGo})*${nbrFichier}/​${nbr})-(${timeT}-${timeGo})"​ | bc | awk -F"​."​ '​{print $1}')
 + timeRemainingHMS=$(date +%T -d "​0000-01-01 ${timeRemainingS} seconds"​)
 +
 + # Envoi données à YADPROGRESS
 + echo  "​${pourcent}"​
 + echo -e "​\n#​Chargement ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}"​
 +
 +
 +
 +
 +
 +
 +done
 +
 +
 +
 +
 +
 +
 +for i in "​${TabYadStream[@]}";​ do
 + echo "​$i"​ >>"​${dossierTmp}/​yadStream.txt"​
 +done
 +}
 +#​===========================================================================================================
 +function STREAM()
 +{
 +[[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​
 +touch "​${dossierTmp}/​yadStream.txt"​
 +TabYadStream=()
 +
 +# Initialisation
 +nbr="​0"​
 +pourcent="​0"​
 +timeGo="​$(date +%s)"
 +
 +# Nombre de fichier
 +nbrFichier=$(awk '/./ {print}'​ <<<​ "​${fileIn}"​ | wc -l)
 +
 +# Calcul le pourcent par fichier
 +pourcentFichier=$(echo "​scale=15;​ 100/​${nbrFichier}"​ | bc)
 +
 +IFS=$'​\n'​
 +
 +for iFileIn in ${fileIn}; do
  STREAMTITLE  STREAMTITLE
  STREAMVIDEO  STREAMVIDEO
  STREAMAUDIO  STREAMAUDIO
  STREAMSUBTITLE  STREAMSUBTITLE
- cdeYadStream=(${cdeYadStream[@]} ​--field="​ ":LBL " ") +  
- + TabYadStream+=( --field="​ ":LBL " ") 
 + 
 + # Nom du fichier 
 + fileNameExt=$(basename "​${iFileIn}"​) 
 + fileName="​${fileNameExt%.*}"​ 
 + 
 + # Envoi données vers YADPROGRESS 
 + pourcent=$(echo "​scale=15;​ (${pourcent}+${pourcentFichier})"​ | bc)  
 + 
 + ((nbr+=1)) 
 + 
 + # Calcul temps restant 
 + timeT="​$(date +%s)"​ 
 + timeRemainingS=$(echo "​scale=15;​ ((${timeT}-${timeGo})*${nbrFichier}/​${nbr})-(${timeT}-${timeGo})"​ | bc | awk -F"​."​ '​{print $1}'​) 
 + timeRemainingHMS=$(date +%T -d "​0000-01-01 ${timeRemainingS} seconds"​) 
 + 
 + # Envoi données à YADPROGRESS 
 + echo  "​${pourcent}"​ 
 + echo -e "​\n#​Analyse ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}"​ 
 +done  
 + 
 +for i in "​${TabYadStream[@]}";​ do 
 + echo "​$i"​ >>"​${dossierTmp}/​yadStream.txt"​
 done done
 } }
Ligne 359: Ligne 482:
 { {
 # 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 "${iFileIn}" -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 ​+%T -d "0000-01-01 ​${durationS} ​seconds")
 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 ​TabYadStream 
-cdeYadStream=(${cdeYadStream[@]} ​--field="<​b>​TITRE:​ $(basename "${i}") - ${durationHMS} - ${rateTotal}</​b>":​LBL " ")+TabYadStream+=( --field="<​b>​TITRE:​ $(basename "${iFileIn}") - ${durationHMS} - ${rateTotal}</​b>":​LBL " ")
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMVIDEO() function STREAMVIDEO()
 { {
-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
    
Ligne 397: Ligne 517:
  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then
    
- # Recherche numéro id depuis la map+ # Recherche ​map depuis ​numéro id
  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 ​TabYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":​CHK "​TRUE"​) + TabYadStream+=( --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 ​TabYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|VIDEO|${codec}|${width}|${height}|${fps}\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|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"​) + TabYadStream+=( --field="​0:​${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":​CHK "​TRUE"​)
- +
  fi  fi
  fi  fi
    
-  +done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-hide_banner -v quiet -select_streams v -show_entries stream=index,​codec_name,​width,​height,​r_frame_rate -of csv=s="​|"​)
-  +
-done <<<​ "${streamVideo}"+
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMAUDIO() function STREAMAUDIO()
 { {
-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}"​) 
-  + codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​) 
- index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​) + rate=$(awk -F [\|] '​{print $4}' <<<​ "​${line}"​) 
- codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​) + channelOut=$(awk -F [\|] '​{print $5}' <<<​ "​${line}"​) 
- rate=$(awk -F [\|] '​{print $4}' <<<​ "​${line}"​) + lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​) 
- channelOut=$(awk -F [\|] '​{print $5}' <<<​ "​${line}"​) + 
- lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​) + LANGUE 
- #​debitAudio=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​) + 
-  + # Affectation TRUE ou FALSE 
- LANGUE + if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then 
-  + bol="​TRUE"​ 
- # Affectation TRUE ou FALSE + 
- if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then + else 
- bol="​TRUE"​ + bol="​FALSE"​ 
-  + fi 
- else + 
- bol="​FALSE"​ + # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​TabYadStream
- fi + if [[ "​${index}"​ != ""​ ]]; then 
-  + printf "|${iFileIn}|0:​${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​cdeYadStream+ TabYadStream+=( --field="​0:​${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":​CHK "​${bol}"​) 
- if [[ "​${index}"​ != ""​ ]]; then + fi 
- 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}"​) +done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-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="​|"​)
-  +
- fi +
-  +
- done <<<​ "${streamAudio}" +
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMSUBTITLE() function STREAMSUBTITLE()
 { {
-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
    
Ligne 477: Ligne 587:
  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 ​TabYadStream)
    
  if [[ "​${index}"​ != ""​ ]]; then   if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​) + TabYadStream+=( --field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​)
- +
  fi  fi
    
-done <<<​ "${streamSub}"+done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-hide_banner -v quiet -select_streams s -show_entries stream=index,​codec_name -show_entries stream_tags=language -of csv=s="​|"​)
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 617: Ligne 726:
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
Ligne 635: Ligne 744:
    
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
- qAudio1=(-q:​a ​0+ qAudio1=(-q:​a ​2
- qAudio2=(-q:​a ​2+ qAudio2=(-q:​a ​1.5
- qAudio3=(-q:​a ​5+ qAudio3=(-q:​a ​1
- qAudio4=(-q:​a 7) + qAudio4=(-q:​a ​0.7) 
- qAudio5=(-q:​a ​9)+ qAudio5=(-q:​a ​0.2)
    
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
Ligne 663: Ligne 772:
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-q:​a 0)  qAudio1=(-q:​a 0)
- qAudio2=(-q:​a ​2+ qAudio2=(-q:​a ​1
- qAudio3=(-q:​a ​5)+ qAudio3=(-q:​a ​4)
  qAudio4=(-q:​a 7)  qAudio4=(-q:​a 7)
  qAudio5=(-q:​a 9)  qAudio5=(-q:​a 9)
Ligne 671: Ligne 780:
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
Ligne 677: Ligne 786:
 fi fi
 } }
-#​=========================================================================================================== +function ​FFMPEG_SIMPLE
-function ​FFMPEG()+
 { {
 +
 +
 +
 IFS=$'​\n'​ IFS=$'​\n'​
    
 for iFileIn in ${fileIn}; do for iFileIn in ${fileIn}; do
- +
  # Initialisation commandes  # Initialisation commandes
  cdeVideo=()  cdeVideo=()
Ligne 693: Ligne 804:
  fileName="​${fileNameExtension%.*}"​  fileName="​${fileNameExtension%.*}"​
  extension="​${fileNameExtension##​*.}"​  extension="​${fileNameExtension##​*.}"​
- + 
 + 
 + 
 + STREAMAUDIO 
 + 
 + 
 +cat "​${dossierTmp}/​stream.txt"​ 
 + 
 + 
 +exit 
 + 
 + 
 + 
 + 
 +  
 + 
 +done 
 +
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +#​=========================================================================================================== 
 +function FFMPEG() 
 +
 +IFS=$'​\n'​ 
 +for iFileIn in ${fileIn}; do 
 + 
 + # Initialisation commandes 
 + cdeVideo=() 
 + cdeAudio=() 
 + cdeSub=() 
 + 
 + # Nom fichier source 
 + fileNameExtension=$(basename "​${iFileIn}"​) 
 + fileName="​${fileNameExtension%.*}"​ 
 + extension="​${fileNameExtension##​*.}"​ 
  # Recherche map  # Recherche map
- mapVideo=$(awk -F [\|] '{if ($4 ~ /VIDEO&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapVideo=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "VIDEO" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- mapAudio=$(awk -F [\|] '{if ($4 ~ /AUDIO&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapAudio=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "AUDIO" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- mapSub=$(awk -F [\|] '{if ($4 ~ /SUBTITLE&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapSub=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "SUBTITLE" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- +
  echo "​=============================================="​  echo "​=============================================="​
  echo " ​ iFileIn: ${iFileIn}"​  echo " ​ iFileIn: ${iFileIn}"​
Ligne 705: Ligne 863:
  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 712: Ligne 870:
  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[@]}" ​-t 10 "​${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} ​-------- ​${rateTotal}"​ ## TEST ## + 
- + echo "​=============================================="​ 
 + echo "​ffmpeg -y -i ${iFileIn} ${cdeMetadata[@]} ${cdeVideo[@]} ${cdeAudio[@]} ​-t 10 ${dirOut}/​${fileName}.${conteneur} 
 + rateTotal: ​${rateTotal}"​ ## TEST ## 
 + echo "​=============================================="​ 
  # 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()
Ligne 747: Ligne 909:
 for iMapVideo in ${mapVideo};​ do for iMapVideo in ${mapVideo};​ do
    
- codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO&& ​/'${iMapVideo}'/ ​&& ​/'${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)+codecVideoIn=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapVideo="​${iMapVideo}" ​-F [\|] '{if ($4 == "VIDEO" ​&& $2 == iFileIn ​&& $3 == iMapVideo){printf "​%s"​ ,$5}}' <<<​ "​${stream}"​)
    
  PROFIL  PROFIL
Ligne 769: Ligne 931:
 { {
 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 ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{ 
- languageISO=$(awk -F [\|] '{if ($4 ~ /AUDIO&& $3 ~ /'​${iMapAudio}'/ ​&& ​/'${fileName}'/​) {printf "​%s"​ ,$7}}' <<<​ "​${stream}"​) +  
- + if ($4 == "AUDIO" ​&& $2 == iFileIn ​&& $3 == iMapAudio) 
 + {printf "%s - %s" ,$5,iFileIn} 
 +  
 + }' <<<​ "​${stream}"​) 
 + 
 + languageISO=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{ 
 +  
 + if ($4 == "AUDIO" ​&& $2 == iFileIn ​&& $3 == iMapAudio) 
 + {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))
Ligne 801: Ligne 968:
  cdeQualityAudio=()  cdeQualityAudio=()
    
-elif [[ "${typeRate}" == "CBR" ]]; then +elif [[ "${quality}" == "Excellente" ]]; then 
-  + 
- if [[ "​${quality}"​ == "​Excellente"​ ]] && ​[[ "​${rateTotal}"​ -gt "​320"​ ]]; then+ if [[ "​${rateTotal}"​ -gt "​320"​ ]]; then
  cdeQualityAudio=(${qAudio1[@]})  cdeQualityAudio=(${qAudio1[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +
 +elif [[ "​${quality}"​ == "​Elevée"​ ]]; then
    
- elif [[ "​${quality}"​ == "​Elevée"​ ]] && ​[[ "​${rateTotal}"​ -gt "​256"​ ]]; then+ if [[ "​${rateTotal}"​ -gt "​256"​ ]]; then
  cdeQualityAudio=(${qAudio2[@]})  cdeQualityAudio=(${qAudio2[@]})
-  + 
- elif [[ "​${quality}"​ == "​Moyenne"​ ]] && ​[[ "​${rateTotal}"​ -gt "​192"​ ]]; then+ elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then 
 + cAudio="​copy"​ 
 + cdeQualityAudio=() 
 + else 
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​) 
 + fi 
 +  
 +elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then 
 + if [[ "​${rateTotal}"​ -gt "​192"​ ]]; then
  cdeQualityAudio=(${qAudio3[@]})  cdeQualityAudio=(${qAudio3[@]})
-  +  
- elif [[ "​${quality}"​ == "​Minimum"​ ]] && ​[[ "​${rateTotal}"​ -gt "​128"​ ]]; then+ elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then 
 + cAudio="​copy"​ 
 + cdeQualityAudio=() 
 + else 
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​) 
 + fi 
 + 
 +elif [[ "​${quality}"​ == "​Minimum"​ ]]; then 
 + if [[ "​${rateTotal}"​ -gt "​128"​ ]]; then
  cdeQualityAudio=(${qAudio4[@]})  cdeQualityAudio=(${qAudio4[@]})
-  +  
- elif [[ "${quality}" == "​Faible"​ ]] && [[ "${rateTotal}" -gt "64" ]]; then + elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then 
- cdeQualityAudio=(${qAudio5[@]}) + cAudio="​copy"​ 
- + cdeQualityAudio=()
  else  else
-  + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
- if [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then +
- cAudio="​copy"​ +
- cdeQualityAudio=() +
-  +
- else +
- cdeQualityAudio=(-b:​a "​${rateTotal}k"​) +
- fi +
- +
  fi  fi
-  + 
-elif [[ "${typeRate}" == "VBR" ]]; then +elif [[ "${quality}" == "Faible" ]]; then 
-  + if [[ "${rateTotal}" ​-gt "64" ]]; 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[@]})  cdeQualityAudio=(${qAudio5[@]})
- +  
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then 
 + cAudio="​copy"​ 
 + cdeQualityAudio=() 
 +  
 + else 
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
  fi  fi
 fi fi
- 
- 
-#​cdeQualityAudio=(-b:​a "​${rateTotal}k"​) ## TEST 
- 
  
  echo "​typeRate:​ ${typeRate}"​ ## TEST  echo "​typeRate:​ ${typeRate}"​ ## TEST
Ligne 862: Ligne 1035:
 function FFMPEG_OUT() 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"​
Ligne 950: Ligne 1121:
 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}"​
-  
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 1094: Ligne 1261:
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
  SAVE  SAVE
- #STREAM 
  MAIN  MAIN
-  
  fi  fi
    
Ligne 1112: Ligne 1277:
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
 +
    
- # YADSOURCE choix "​Fichier"​ + # YADSOURCE choix "​Fichier ​avec analyse
- elif [[ "​${source}"​ == "​Fichier"​ ]]; then+ elif [[ "​${source}"​ == "​Fichier ​avec analyse" ]]; then
  YADFILE  YADFILE
 +
 + # Si dossier selectionner,​ liste les fichiers contenu du dossier
 + [[ -d "​${fileIn}"​ ]] && fileIn=$(ls "​${fileIn}"/​*)
    
  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​
Ligne 1128: Ligne 1297:
  # YADFILE Bouton "​Valider"​  # YADFILE Bouton "​Valider"​
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
- STREAM+ 
 + STREAM ​| YADPROGRESS 
 + 
 + IFS=$'​\n'​ 
 + TabYadStream=($(cat "​${dossierTmp}/​yadStream.txt"​)) 
 + rm "​${dossierTmp}/​yadStream.txt"​ 
 +
  MAIN  MAIN
  fi  fi
 +
 + # YADSOURCE choix "​Fichier"​
 + elif [[ "​${source}"​ == "​Fichier"​ ]]; then
 + YADFILE
 +
 + # Si dossier selectionner,​ liste les fichiers contenu du dossier
 + [[ -d "​${fileIn}"​ ]] && fileIn=$(ls "​${fileIn}"/​*)
    
 + # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​
 + if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
 + rm -rf "​${dossierTmp}"​
 + exit
 + 
 + # YADFILE Bouton "​Annuler"​
 + elif [[ "​${status}"​ -eq "​2"​ ]]; then
 + MAIN
 +
 + # YADFILE Bouton "​Valider"​
 + elif [[ "​${status}"​ -eq "​0"​ ]]; then
 + STREAM_SIMPLE | YADPROGRESS
 +
 + IFS=$'​\n'​
 + TabYadStream=($(cat "​${dossierTmp}/​yadStream.txt"​))
 + rm "​${dossierTmp}/​yadStream.txt"​
 +
 + MAIN
 + fi
 +
  # YADSOURCE choix "​DVD"​  # YADSOURCE choix "​DVD"​
  elif [[ "​${source}"​ == "​DVD"​ ]]; then  elif [[ "​${source}"​ == "​DVD"​ ]]; then
Ligne 1145: Ligne 1347:
    
  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 +  if [[ "​${source}"​ == "​Fichier avec analyse"​ ]]; then 
- IFS=$"​|"​ + # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt 
- numLine="​4"​ + IFS=$"​|"​ 
- stream=$( + numLine="​4" ​# Ligne 4 première ligne avec valeur TRUE ou FALSE 
- while read line; do + stream=$( 
- bol=$(awk 'NR == '​${numLine}'​ {printf "​%s"​ ,$1}' <<<​ "​$(printf "​%s\n"​ ${yadMain} | awk NF)"​) + while read line; do 
- printf "​${bol}${line}\n"​ + bol=$(awk 'NR == '​${numLine}'​ {printf "​%s"​ ,$1}' <<<​ "​$(printf "​%s\n"​ ${yadMain} | awk NF)"​) 
- ((numLine+=1)) + printf "​${bol}${line}\n"​ 
- done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}'​) + ((numLine+=1)) 
-  + done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}'​) 
- SAVE + 
- FFMPEG + SAVE 
- MAIN + FFMPEG 
- + MAIN 
 + 
 + elif [[ "​${source}"​ == "​Fichier"​ ]]; then 
 + 
 + SAVE 
 + FFMPEG_SIMPLE 
 + MAIN 
 + fi
 fi fi
 } }
 #​=========================================================================================================== #​===========================================================================================================
 CONFIGURATION CONFIGURATION
 +
 +#​fileIn="/​home/​$USER/​Bureau/​0in.m4a"​ ## TEST
 +#STREAM ## TEST
 +
 MAIN MAIN
 +
 +
 +
  
 </​code>​ </​code>​
  

Pied de page des forums

Propulsé par FluxBB