#126 Le 22/11/2021, à 19:27
- Watael
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
je suis obligé de retirer les sous-titres télétextes de mes vidéos si je veux que le script convertit toutes les vidéos
où est-ce que ça coince ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#127 Le 22/11/2021, à 19:51
- Compte supprimé
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
je suis obligé de retirer les sous-titres télétextes de mes vidéos si je veux que le script convertit toutes les vidéos
où est-ce que ça coince ?
Ça fait 4 mois, je ne m'en souviens plus, il faudra que je révise mais je crois que ça génèrait une erreur car ne n'est pas supporté par vp9 ou ffmpeg (enfin un truc pas pris en charge), je crois qu'à l'époque je m'étais demandé si j'allais convertir les sous-titres et les incruster dans la vidéo mais j'ai choisi de perdre les sous-titres temporairement bien que ce soit irréversible puisque j'efface les vidéos originales au fur et à mesure.
#128 Le 23/11/2021, à 18:51
- Compte supprimé
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
Salut, des petites statistiques rapides non-poussées :
J'enregistre la TNTHD à environ 2,2Go/h et je recompresse le MPEG2.m2ts en .vp9 à 200Mo/s avec ce script sans perte visuelle remarquable (gain de place x11).
Édit : C'est très variable d'un film à un autre… Je ferais des statistiques plus tard.
Dernière modification par Compte supprimé (Le 23/11/2021, à 18:56)
#129 Le 23/11/2021, à 19:58
- Compte supprimé
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
De meilleures statistiques :
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv$ du -cm */*.m2ts ;for i in */*.m2ts; do dur=$(ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)"); date -ud "1970/01/01 $dur" +%s; done | paste -s -d+ | bc
3712 tv-Films & D.A./France 2 - La soupe aux choux - 28-03-2020 14h00 01h55 (2819).m2ts
1291 tv-Films & D.A./Johnny English - 15-10-2018 20h58 01h47 (135).ed.m2ts
3330 tv-Films & D.A./Johnny English, le retour - 18-06-2020 20h59 02h02 (2840).ed.m2ts
762 tv-Films & D.A./La jetée - 06-05-2018 23h00 30m (99).ed.m2ts
3335 tv-Films & D.A./La nuit au musée 2 - 19-07-2020.ed.m2ts
3362 tv-Films & D.A./Le Boulet (manque instant début).ed.m2ts
3344 tv-Films & D.A./On ne choisit pas sa famille.ed.m2ts
3165 tv-Films & D.A./The Shanghai Job - 20-02-2020 22h55 01h55 (2793).ed.m2ts
2906 tv-Films & D.A./Tortue Ninja (Chumlee le ninja) - 27-02-2020 21h00 02h (2799).ed.m2ts
3684 tv-Films & D.A./Total Recall 01h45.ed.m2ts
1417 tv-Reportages et Documentaires/Envoyé spécial - Démarchage téléphonique - 25-10-2018.ed.m2ts
1104 tv-Reportages et Documentaires/Envoyé spécial - Service après vente - 13-02-2020.ed.m2ts
3311 tv-Reportages et Documentaires/iHuman - L'intelligence artificielle et nous - 21-04-2020 22h30 01h55 (2831).ed.m2ts
3078 tv-Reportages et Documentaires/L'alcool, l'intoxication globale - 12-05-2020 22h20 01h42 (2836).ed.m2ts
6147 tv-Reportages et Documentaires/Liberté, Égalité… Sexualité ! Enquête sur les nouveaux comportements sexuels des français.ed.m2ts
5055 tv-Spectacles & Musiques/Destination Eurovision (2e partie) - 20-01-2018 20h55.ed.m2ts
3103 tv-Spectacles & Musiques/Ils se re-aiment Michèle LAROQUE et Pierre PALMADE.ed.m2ts
2819 tv-Spectacles & Musiques/Ils se sont aimés - Michèle LAROQUE et Pierre PALMADE.ed.m2ts
54916 total
103782
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv$
54916Mo * 3600s / 103782s = 1 904,9 Mo/h pour la TNTHD en MPEG2.
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv$ du -cm */*.webm+ ;for i in */*.webm+; do dur=$(ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)"); date -ud "1970/01/01 $dur" +%s; done | paste -s -d+ | bc
654 tv-Films & D.A./48 heures de plus.ed.m2ts.webm+
679 tv-Films & D.A./48 heures.ed.m2ts.webm+
476 tv-Films & D.A./Blade Runner 2049 - 20-09-2020 21h05 02h29.ed.m2ts.webm+
463 tv-Films & D.A./Boule Bill - 05-07-2020 21h05 01h18.ed.m2ts.webm+
543 tv-Films & D.A./Brillantissime - 31-05-2020 21h05 01h26.ed.m2ts.webm+
501 tv-Films & D.A./Coexister - 03-05-2020 21h05.ed.m2ts.webm+
563 tv-Films & D.A./Diversion.ed.m2ts.webm+
397 tv-Films & D.A./Double Zéro.ed.mpg.webm+
615 tv-Films & D.A./France 2 - Garde alternée - 30-08-2020 21h05 01h55 (2847).ed.m2ts.webm+
472 tv-Films & D.A./France 2 - Hancock - 05-07-2020 22h27 01h58 (2842).ed.m2ts.webm+
514 tv-Films & D.A./France 2 - La chance de ma vie - 16-08-2020 21h05 01h45 (2845).ed.m2ts.webm+
656 tv-Films & D.A./France 2 - L'amour, c'est mieux à deux - 09-08-2020.ed.m2ts.webm+
779 tv-Films & D.A./France 3 - Man of Steel - 19-03-2020.ed.m2ts.webm+
712 tv-Films & D.A./Hitch, expert en séduction - 29-03-2020.ed.m2ts.webm+
420 tv-Films & D.A./Le Flic de Beverly Hills.ed.mpg.webm+
12 tv-Reportages et Documentaires/DirectStar_Livehome Mika Tomboy (151110_235555).mpg.webm+
89 tv-Reportages et Documentaires/L'échodeslois OGM (140711_234459).mpg.webm+
11 tv-Reportages et Documentaires/Livehome Mika (151110_235241).mpg.webm+
171 tv-Reportages et Documentaires/Partir revenir (suicide) (160711_220048).mpg.webm+
386 tv-Spectacles & Musiques/Olympia 99 (Raymond Devos).webm+
9103 total
99710
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv$
9103Mo * 3600s / 99710s = 328,66 Mo/h pour la TNTHD en vp9.
Et on peut comparer 1 904,9 Mo/h pour la TNTHD en MPEG2 avec 328,66 Mo/h pour la TNTHD en vp9, et 1904,9 / 328,66 = 5,796
Comparaison statistique : J'enregistre la TNTHD à environ 1905 Mo/h et je recompresse le MPEG2.m2ts en .vp9 à 328.7Mo/h avec ce script sans perte visuelle remarquable (gain de place x5,8).
Où écrit autrement : la place de 5,8 To de films TNTHD ne prend plus que 1,0 To d'espace disque une fois recompressée.
Édit : correction des unités, Mo/h et non Mo/s…
Dernière modification par Compte supprimé (Le 05/12/2021, à 15:16)
#130 Le 05/12/2021, à 15:28
- Compte supprimé
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
Bonjour ce script était un très bon exercice de programmation bash, mais comme certaines vidéos prennent parfois pas loin de 2 journées de compression, le script est inefficace, mais m'a permis de chercher et trouver de bons paramètres de recompressions vidéos.
Je vais faire un autre script de conversions vidéos à partir de taskset pour allouer différents nombres de cœurs CPU à ffmpeg avec cron qui paramétrera un drapeau («flag ?» pas certain du nom mais j'ai appris comme ça sur ordinateurs Amiga COMMODORE). Grâce au drapeau jour-nuit, je changerai à la volée le nombre de cœurs/CPU de ffmpeg.
Et je dois surtout changer mon ventilateur qui fait trop de bruit et optimiser la ventilation avec des mousses acoustiques à l'intérieur du boîtier pour forcer l'air à souffler sur le processeur J5005 fanless. J'en profiterai pour monter mon deuxième disque dur de 8To qui servira pour les sauvegardes quotidiennes nocturnes internes.
À+
#131 Le 05/12/2021, à 15:38
- Compte supprimé
Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.
Merci à tous les intervenants sur ce sujet, notemment kamaris, Christian DELAIR, Watael,et MicP qui m'ont énormément aidé.
Voici la dernière version de ce script :
#!/bin/bash
# vp9.bash
# convertir vidéos en vp9 suivant profil horaire.
# LDVC@
# 202106210118 202106221624 202106232147 202106251226 202106261046 202106281459
# 202106281929 202107032124 202107041129 202107042013 202107061757 202107102133
# 202107111150 202107120856 202107121135 202111101439 202111261716
# Remerciements :
# débogué par kamaris
# 202106220027
# astuce de l'informaticien Christian DELAIR pour la recherche automatique dans tous les sous-dossiers avec for fichier in "$(find . -type f)"
# 202106271930 202106281243
# débogué par Watael : descendre dans les sous-dossiers shopt -s nullglob globstar ; for f in ./** et utilisation de cut -d '.' -f1
# aide de documentatiors par MicP
# 202106281540
# apt-get update && apt-get install libav-tools
#
# https://www.it-connect.fr/nice-et-renice-la-priorite-des-processus-sous-linux/
# Si l’on souhaite modifier un processus, de façon uniforme, en une seule commande, il suffit de combiner la commande pidof avec une sortie vers xargs permettant de construire la commande à partir de ce que renvoie pidof:
#
# $ pidof vmstat 1 | xargs renice 2
#
# De plus, afin de faire en sorte qu’un utilisateur standard puisse aussi faire des changements de priorité comme root, il faut modifier le fichier /etc/security/limits.conf et ajouter en dernière ligne, pour l’utilisateur concerné :
# <User> - nice -20
# ATTENTION:cela présente évidemment un risque potentiel de sécurité, car on offre la possibilité à un utilisateur autre que root d’interagir avec le système et son fonctionnement interne.
sleep 3
debut_heure_turbo=7 #ne pas écrire l'heure en commençant par un 0 (zéro) sinon cale créé un bogue.
threads_heure_turbo=3
debut_heure_calme=19 #ne pas écrire l'heure en commençant par un 0 (zéro) sinon cale créé un bogue
threads_heure_calme=2
suppression_automatique=1 # simulation suppression=0 ; suppression automatique=1 ;
#un peu de couleurs dans la console.
RED='\033[0;31m'
BLUE='\033[0;34m'
GREEN='\033[0;32m'
NC='\033[0m'
echoBlue () {
echo -e "${BLUE}$*${NC}"
}
echoGreen () {
echo -e "${GREEN}$*${NC}"
}
echoRed () {
echo -e "${RED}$*${NC}"
}
duree_video () {
mediainfo --Inform="General;%Duration%" "$1"|cut -d '.' -f1 #astuce pour arrondir la durée en milliseconde à l'entier
}
#dossier=$(zenity --title="Choisir un dossier de vidéos à compresser." --file-selection --file-selection --multiple --filename "${PWD}/")
#Si on clique sur le bouton Annuler
#if [ "$?" -eq 1 ]; then
#On quitte le script
# exit
#fi
#Sinon on continue
#echo "Recompression des vidéos du répertoire $dossier"
comparaison_nettoyage () {
fichier="$1"
#echo "DÉBUG : $fichier" #débogage.
taille1=$(stat -c%s "$fichier")
taille2=$(stat -c%s "$fichier.webm")
echoGreen "TAILLES : $taille1 et $taille2" #débogage.
duree1=$(duree_video "$fichier")
duree2=$(duree_video "$fichier.webm")
echoGreen "DURÉES : $duree1 et $duree2" #débogage.
if (( (duree1-duree2)>2000 || (duree2-duree1)>2000 )) #(( (${((duree1-duree2))#-})>2000 )) #si la valeur absolue de la différence fait plus de 2000ms.
then #Les durées sont relativement différentes
echoRed "LES DURÉES SONT RELATIVEMENT DIFFÉRENTES : originale=$duree1 et conversion=$duree2."
if [[ $suppression_automatique == 1 ]]
then
echoBlue "Effacement de $fichier.webm"
rm -f "$fichier.webm"
else
echoRed "MISE DE CÔTÉ du $fichier.webm"
mv "$fichier.webm" "$fichier.webm-à_effacer"
fi
elif (( taille1 > taille2 )) #Les durées sont pratiquement les mêmes.
then echoGreen "Les durées sont pratiquement les mêmes à moins de 2000 ms."
#le fichier vidéo original est plus volumineux que le fichier recompressé VP9
echoBlue "Le fichier vidéo original est plus volumineux que le fichier recompressé VP9."
if [[ $suppression_automatique == 1 ]]
then
echoBlue "Effacement de $fichier"
rm -f "$fichier"
echoGreen "Rennomage de $fichier.webm en $fichier.webm+"
mv "$fichier.webm" "$fichier.webm+"
else
echoGreen "SIMULATION SUPPRESSION de $fichier"
echoGreen "SIMULATION RENNOMAGE de $fichier.webm en $fichier.webm+" #on protège le fichier de ce script de conversion en ajoutant un +
# Le + à la fin du ficher ne protège pas un fichier en temps normal, mais c'est une façon de nommer les fichiers pour les mettre en valeur
# et signaler de ne pas les recompresser.
fi
elif [[ $suppression_automatique == 1 ]] #le fichier vidéo original est moins volumineux que le fichier recompressé VP9
then echoBlue "Le fichier vidéo original est moins volumineux que le fichier recompressé VP9."
echoRed "Effacement de $fichier.webm"
rm -f "$fichier.webm"
echoGreen "Renommage de $fichier en $fichier+" #on protège le fichier de ce script de conversion en ajoutant un +
# Le + à la fin du ficher ne protège pas un fichier en temps normal, mais c'est une façon de nommer les fichiers pour les mettre en valeur
# et signaler de ne pas les recompresser.
mv "$fichier" "$fichier+"
else
echoGreen "SIMULATION SUPPRESSION de $fichier.webm"
echoBlue "SIMULATION RENNOMAGE de $fichier en $fichier+"
fi
}
#routine principale
shopt -s nullglob globstar
for fichier in ./**
do
if [ -d "$fichier" ] #test est-ce un répertoire ?
then #c'est un répertoire
echo -e "Traitement du répertoire $fichier : \\n"
elif [ "${fichier: -1}" != '+' ] && [ "${fichier: -1}" != '-' ] &&[ "${fichier: -14}" != '.webm-à_effacer' ] #le fichier est-il protégé ?
then #fichier non protégé
if ( file -b "$fichier" | grep -q audio ) #le fichier est-il audio ?
then
echo "$fichier est un fichier audio."
elif [ -n "$(duree_video "$fichier")" ] #le fichier n'est pas audio alors le test de durée a-t-il une valeur retour ?
then #le fichier a une durée vidéo
if [ "$(duree_video "$fichier")" -gt 100 ] #la durée valeur retour est-elle plus grande que 100ms ? si oui, puisque ce n'est pas audio alors c'est vidéo
then #on est en présence d'un fichier vidéo
if [ -e "$fichier.webm+" ] #si le fichier.webm+ existe
then #le fichier.webm+ existe
if [[ $suppression_automatique == 1 ]]
then #le fichier.webm+ existe alors on efface le fichier
echoBlue "Effacement de $fichier"
rm -f "$fichier"
else
echoGreen "SIMULATION SUPPRESSION de $fichier"
mv "$fichier" "$fichier-"
fi
else
echo "Traitement du fichier vidéo : $fichier"
#date
echo "le fichier vidéo n'est pas protégé par un + à la fin du nom de fichier dans l'extension."
# Le + à la fin du ficher ne protège pas un fichier en temps normal, mais c'est une façon de nommer les fichiers pour les mettre en valeur
# et signaler de ne pas les recompresser.
if [ "$(file -b "$fichier")" != "WebM" ]
then # $fichier n'est pas WebM.
echo "$fichier n'est pas WebM."
if [ "$(file -b "$fichier.webm")" = "WebM" ]
then #Le fichier $fichier.webm existe.
echoGreen "Le fichier $fichier.webm existe."
#ls -l "$fichier"
#ls -l "$fichier.webm"
else #création de la conversion du fichier vidéo en WebM.
echoBlue "Conversion\\n$fichier\\nen\\n$fichier.webm"
heure=$(date '+%-H')
#echoBlue "Débogage : heure=$heure"
echo "Durée de la vidéo à recompresser : $(mediainfo --Inform="General;%Duration/String3%" "$fichier")"
if (( heure>debut_heure_turbo && heure<debut_heure_calme ))
then
echoGreen "Heure turbo : compression avec $threads_heure_turbo threads-coeurs-CPU."
threads_horaire=$threads_heure_turbo
else
echoGreen "Heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."
threads_horaire=$threads_heure_calme
fi
echo "Début compression :"
nice -n 16 ffmpeg \
-i "$fichier" \
-sn \
-c:v:0 libvpx-vp9 \
-filter_threads $threads_horaire \
-crf 35 \
-b:v 1000k \
-tile-columns 4 \
-frame-parallel 1 \
-quality best \
-auto-alt-ref 1 \
-lag-in-frames 25 \
-c:a libopus \
-b:a 16k \
-strict -2 "$fichier.webm" \
-hide_banner \
-loglevel panic \
-stats
#ffmpeg -i "$fichier" -c:v:0 libvpx-vp9 -crf 35 -b:v 1000k -tile-columns 4 -frame-parallel 1 -quality best -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 16k -strict -2 "$fichier.webm" -hide_banner -loglevel panic -stats
fi
comparaison_nettoyage "$fichier"
fi
fi
else # $fichier ne sera pas traité.
echoBlue "$fichier ne sera pas traité."
fi
echo
fi
elif [ "${fichier: -1}" == '-' ] || [ "${fichier: -14}" == '.webm-à_effacer' ]
then
if [[ $suppression_automatique == 1 ]]
then #le fichier.webm+ existe alors on efface le fichier
echoBlue "Effacement de $fichier"
rm -f "$fichier"
else
echoGreen "SIMULATION SUPPRESSION de $fichier"
fi
fi
done
echoGreen "Fini."
read -r -p "Appuyer sur une la touche Entrée pour continuer."
exit
# je suis obligé de retirer les sous-titres télétextes de mes vidéos si je veux que le script convertissent toutes les vidéos. C'est embarrassant, car j'aimais
#bien avoir les sous-titres disponibles si je dois passer la vidéo à quelqu'un qui entend mal et qui se sert des sous-titrages pour «sourds et malentendants».
#Ce point sera éventuellement à rétablir par la suite (option -sn de ffmpeg).
Merci.
À+