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:42]
Slyfox [Slymedia]
utilisateurs:slyfox:scripts:accueil [07/08/2020 17:40]
Slyfox supprimée
Ligne 6: Ligne 6:
   * 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à !.]] :-)
   * Création par [[user>​Slyfox]] 14.08.2018   * Création par [[user>​Slyfox]] 14.08.2018
-  * Suivi : {{tag>à-placer}} +  * Suivi : {{tag>À compléter}} 
  
 ===== Introduction ===== ===== Introduction =====
 Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio. Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio.
  
 +===== 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 ===== ===== Script =====
 <note important>​En cours d'​écriture,​ peut fonctionner que partiellement.</​note>​ <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 46: 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 82: 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 100: 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 121: 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 152: 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 342: 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 362: 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 400: 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 480: 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 620: 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 638: 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 666: 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 674: 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 680: 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 696: 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 708: 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 715: 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 750: 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 772: 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 804: 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 865: 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 953: 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 1097: Ligne 1261:
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
  SAVE  SAVE
- #STREAM 
  MAIN  MAIN
-  
  fi  fi
    
Ligne 1115: 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 1131: 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 1148: 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