Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/06/2021, à 17:58

Compte supprimé

[RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Bonjour à tous !
J'espère que vous allez bien.

Je suis en train de rédiger un script de conversions vidéos qui s'adapte au moment de la journée. Le travail se fera sur un seul thread/cœur/CPU au moment où j'ai besoin de calme, en l’occurrence entre 19h et 7h du matin, et le script passera automatiquement sur 2 ou 3 threads/cœurs/CPU le reste du temps (entre 7h et 19h), sur le NAS J5005-itx.

Je publierai le script en entier sous licence creative commons quand il sera débogué. Voici la partie qui coince :

…
			heure=$(date +%H)
			echo "heure=$heure"
			if ["$heure">"07"] && ["$heure"<"19"]
			then 
				echo "heure turbo"
				ffmpeg -i "$file" -c:v:0 libvpx-vp9 -threads 2 -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 "$file".webm ;
			else
				echo "heure calme"
				ffmpeg -i "$file" -c:v:0 libvpx-vp9 -threads 1 -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 "$file".webm ;
			fi
…

Mon NAS fait sa sauvegarde externe automatiquement à 2h00, et l'ordinateur fait sa sauvegarde automatiquement vers le NAS à 5h00. C'est pourquoi, la nuit, les conversions vidéos ne se font que sur un seul thread/cœur/CPU pour ne pas faire trop chauffer le CPU J5005 pour ne pas entendre le ventilateur configuré en mode automatique. Le but du jeu est de ne jamais entendre le ventilateur, même la journée, c'est pourquoi les conversions vidéos en journée ne se feront que sur 2 ou 3 threads/cœurs/CPU.

Merci.
Bien cordialement,
L_d_v_c@

Dernière modification par Compte supprimé (Le 05/12/2021, à 15:31)

#2 Le 21/06/2021, à 22:20

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Si tu veux rester POSIX :

if [ "$heure" -gt 7 ] && [ "$heure" -lt 19 ]

Si tu peux faire du bash :

if ((heure > 7 && heure < 19))

Hors ligne

#3 Le 21/06/2021, à 23:31

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Merci kamaris.
Parce que le Bash n'est pas POSIX ? (Édit : je viens de survoler l'article POSIX de wikipédia et ca reste flou pour moi).

Mon script est dans un fichier que j'ai nommé «vp9.sh». Je crois que c'est un script BASH, mais je n'en sais rien en fait.

Ça a l'air mieux ! Merci ! Je vais peut-être ajouter zenity pour avoir accès à des boites de dialogues… Voici mon script temporaire qui fonctionne mieux du coup !…

#!/bin/bash 
# convertir vidéos en vp9
# LDVC@
# 202106210118
# débogué par kamaris
# 202106220027
 
sleep 3
for file in *.*
do
	echo »»»»»»»»»» $file ««««««««««
	date 
	echo "traitement du fichier" "$file"
	if [ "$(file -b "$file")" != "WebM" ]
	then
		echo "$file" " n'est pas WebM."
		if [ "$(file -b "$file.webm")" = "WebM" ]
		then	
			echo "Le fichier $file.webm existe."
			ls -l "$file.webm"
		else	
			echo "conversion $file en $file.webm"
			heure=$(date +%H)
			echo "heure=$heure"
			if ((heure > 7 && heure < 19))
			then 
				echo "heure turbo"
				ffmpeg -i "$file" -c:v:0 libvpx-vp9 -threads 2 -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 "$file".webm ;
			else
				echo "heure calme"
				ffmpeg -i "$file" -c:v:0 libvpx-vp9 -threads 1 -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 "$file".webm ;
			fi
		fi
	else
		echo "$file" " est un fichier WebM."
	fi
	echo
	echo
done
echo "Fini."
sleep 180
exit

PS : je t'ai cité pour le débogage, si cela ne te gêne pas ?
À+
Cordialement,
L_d_v_c@

Dernière modification par Compte supprimé (Le 22/06/2021, à 02:39)

#4 Le 22/06/2021, à 08:55

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

bash contient tout ce qui est POSIX mais ne s'y limite pas.
Le contexte d'évaluation arithmétique ((…)), en particulier, n'est pas POSIX (mais le contexte de développement arithmétique $((…)) l'est par contre).

Peu importe le nom que tu donnes à ton script, ce qui compte c'est le shebang : ce qui est placé au tout début du script.
Donc ici avec #!/bin/bash c'est bon, à condition que le script soit appelé directement par son nom (par ex. ./vp9.sh), car si un interpréteur est spécifié (par ex. sh vp9.sh), il prend le pas sur le shebang.

Pas de problème pour la citation smile

Une autre remarque : il suffit en général de se limiter à une paire de guillemets doubles pour encadrer du texte avec des variables, comme tu l'as fait parfois, mais pas toujours.
Exemple :

echo "traitement du fichier $file"

au lieu de

echo "traitement du fichier" "$file"

Et toujours mettre des guillemets doubles pour préserver les espaces, entre autres :

echo "»»»»»»»»»» $file ««««««««««"

Ultime remarque : à moins que tu ne tiennes spécialement à ce que cette discussion disparaisse, il vaudrait peut-être mieux demander son déplacement dans « Terminal, scripts et ligne de commande », car ça peut toujours servir à d'autres.

Hors ligne

#5 Le 22/06/2021, à 15:16

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Salut.
Voici l'avancement de mon script :

#!/bin/bash 
# convertir vidéos en vp9
# LDVC@
# 202106210118 202106221624
# débogué par kamaris
# 202106220027

debut_heure_turbo=7
threads_heure_turbo=4
debut_heure_calme=19
threads_heure_calme=2
suppression_automatique=0 # 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}"
}
 
sleep 3
for fichier in *.*
do
	echoBlue "traitement du fichier " "$fichier"
	date
	if [ "${ficher: -1}" != "+" ]
	then	
		echo "le fichier n'est pas protégé par un + à la fin du nom de fichier dans l'extension."
		if [ "$(file -b "$fichier")" != "WebM" ]
		then	# $fichier n'est pas WebM.
			echoRed "$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"
				taille1=stat -c%s $fichier
				taille2=stat -c%s "$fichier.webm"
				if (( taille1 > taille2 ))
				then	#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
						echoRed "Effacement de $fichier"
						rm -f "$fichier"
					else
						echoGreen "SIMULATION EFFACEMENT de $fichier"
					fi
				else	#le fichier vidéo original est moins volumineux que le fichier recompressé VP9
					echoBlue "Le fichier vidéo original est moins volumineux que le fichier recompressé VP9."
					if ((suppression_automatique==1))
					then
						echoRed "Effacement de $fichier.webm"
						rm -f "$fichier"
						echoRed "Renommage de $fichier en $fichier+"	#on protège le fichier de ce script de conversion en ajoutant un +
						mv "$fichier" "$fichier+"
					else
						echoGreen "SIMULATION EFFACEMENT de $fichier.webm"
						echoGreen "SIMULATION RENNOMAGE de $fichier en $fichier+"
					fi
				fi
			else	#création de la conversion du fichier vidéo en WebM.
				echoBlue "conversion $fichier en $fichier.webm"
				heure=$(date +%H)
				echoBlue "débogage : heure=$heure"
				if ((heure > debut_heure_turbo && heure < debut_heure_calme))
				then 
					echoGreen "heure turbo : compression avec $threads_heure_turbo threads/coeurs/CPU."
					ffmpeg -i "$fichier" -c:v:0 libvpx-vp9 -filter_threads $threads_heure_turbo -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;
				else
					echoGreen "heure calme : compression avec $threads_heure_calme threads/coeurs/CPU."
					ffmpeg -i "$fichier" -c:v:0 libvpx-vp9 -threads $threads_heure_calme -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
			fi
		else
			echoGreen "$fichier" " est un fichier WebM."
		fi
		echo
		echo
	fi
done
echoGreen "Fini."
sleep 180
exit

Et j'ai encore un problème avec guillemets et parenthèses …

				if (((stat -c%s ("$fichier")) > (stat -c%s ("$fichier.webm"))))

Que j'ai réussi à contourner :

				taille1=stat -c%s $fichier
				taille2=stat -c%s "$fichier.webm"
				if (( taille1 > taille2 ))

La ligne compacte plante sur certains noms de fichiers… La deuxième solution semble fonctionner et clarifie le code finalement.
Je dois continuer les tests, et notamment le test ultime : l'espace disque restant…
À+

Dernière modification par Compte supprimé (Le 22/06/2021, à 15:37)

#6 Le 22/06/2021, à 15:50

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Tu oublies la substitution de commande $(…) (et à nouveau certains guillemets) :

taille1=$(stat -c%s "$fichier")
taille2=$(stat -c%s "$fichier.webm")
if (( taille1 > taille2 ))

Et donc cette fois-ci les $ sont aussi nécessaires pour la version compacte :

if (( $(stat -c%s "$fichier") > $(stat -c%s "$fichier.webm") ))

Hors ligne

#7 Le 22/06/2021, à 15:59

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

UN ÉNORME MERCI kamaris !

J'étais arrivé à saturation, ne comprenant plus quand est-ce qu'il faut ou ne faut par les $, les (…) et les guillemets !
Il va falloir que je trouve des cours simples, car là, c'est trop galère… je n'ai pas pigé la norme, rien de logique pour l'instant…

Dernière modification par Compte supprimé (Le 22/06/2021, à 15:59)

#8 Le 22/06/2021, à 16:09

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

De rien wink
Un petit cours en français pour poser les bases : https://eric-sanchis.developpez.com/linux/shell/bash/
Ensuite, il faut potasser man bash.

Hors ligne

#9 Le 22/06/2021, à 16:18

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

kamaris a écrit :

De rien wink
Un petit cours en français pour poser les bases : https://eric-sanchis.developpez.com/linux/shell/bash/
Ensuite, il faut potasser man bash.

Merci, je garde sous la main mais je cherchais largement moins de 100 pages, je vais regarder du coté du site du zéro… oui OpenClassrooms mais l'ancien nom me rassure ! En général leurs cours sont compactes et abordables…

Introduction aux scripts shell.

Dernière modification par Compte supprimé (Le 26/06/2021, à 00:16)

#10 Le 22/06/2021, à 17:25

diesel

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

L_d_v_c@ a écrit :

je cherchais largement moins de 100 pages

Ben..., c'est un peu comme vouloir maîtriser la physique quantique à partir d'un document de 10 pages. Mission impossible.

bash sait faire tellement de choses qu'il faut lire un minimum de pages pour comprendre un peu ce qu'on peut faire avec.

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 22/06/2021, à 17:26)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#11 Le 23/06/2021, à 00:56

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Je viens tout juste de comprendre la première ligne du script #!/bin/bash et j'aurais dû nommer mon fichier vp9.bash puisqu'il n'y a pas toujours besoin de l'extension sur GNU/Linux.
Je commence à peine à faire la différence entre sh et bash... !

#12 Le 23/06/2021, à 01:13

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Déjà, c'est bien de savoir ça !

openclassroom a écrit :

...Il existe trois types de quotes :

   - les apostrophes ' ' (simples quotes) ;
   - les guillemets " " (doubles quotes) ;
   - les accents graves ` ` (back quotes)

#13 Le 23/06/2021, à 04:44

MicP

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Dans son message #9, kamaris a écrit :

… Un petit cours en français pour poser les bases : https://eric-sanchis.developpez.com/linux/shell/bash/

Pour mes beaux yeux (mais fragiles), j'avais "retravaillé" la feuille css de la version html de Introduction à la programmation en Bash (de Mr Eric Sanchis) :
ce qui donne : http://mpailhe.free.fr/bashMic/sanchis/

Dernière modification par MicP (Le 23/06/2021, à 09:14)

Hors ligne

#14 Le 23/06/2021, à 10:42

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

La version originale pour l'impression, et ta version retouchée pour l'écran MicP wink

Dernière modification par Compte supprimé (Le 23/06/2021, à 10:42)

#15 Le 23/06/2021, à 11:03

MicP

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

C'est sûr que si on veux garder un peu d'encre dans son imprimante,
il vaudra mieux ne pas imprimer les pages web qui utilisent le fichier css que j'ai modifié lol

Il y a aussi quelques liens dans http://mpailhe.free.fr/bashMic/
mais il me faudra trier un peu tout ça pour séparer les fichiers html des fichiers pdf

Dernière modification par MicP (Le 23/06/2021, à 11:21)

Hors ligne

#16 Le 23/06/2021, à 11:18

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Ça semble génial tout ces sujets ! Dommage que je manque de temps.
Je n'ai jamais fait :

man intro

Mais je le ferai dès que possible...
Merci.
PS : je continue de lire mon cours accéléré via Openclassroom...

#17 Le 23/06/2021, à 11:25

grandtoubab

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Pourquoi le format WebM ?


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#18 Le 23/06/2021, à 11:58

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

grandtoubab a écrit :

Pourquoi le format WebM ?

J'ai utilisé le format vp9 WebM dans mon script, car c'est un format libre, et qu'en plus il me fournit la plus grande compression possible (petits fichiers) à qualité équivalente... à l'œil.

J'espère réduire entre 2 et 4 la taille de ma vidéothèque.

Dernière modification par Compte supprimé (Le 23/06/2021, à 11:59)

#19 Le 23/06/2021, à 12:49

grandtoubab

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

L_d_v_c@ a écrit :
grandtoubab a écrit :

Pourquoi le format WebM ?

J'ai utilisé le format vp9 WebM dans mon script, car c'est un format libre, et qu'en plus il me fournit la plus grande compression possible (petits fichiers) à qualité équivalente... à l'œil.

J'espère réduire entre 2 et 4 la taille de ma vidéothèque.

ok
pour compresser un max en vue de lecture sur smartphone je fais ceci dans mon script convert3gp.sh

#!/bin/bash
#set -x
#
#
file=$1
/usr/bin/ffmpeg -hide_banner -y -i "$file" -map_metadata -1 -r 25 -b:v 128k -filter:v  scale=w=480:h=-1 -b:a 64k -acodec aac -strict experimental -vcodec libx264 -profile:v main -threads 0 "$file".3gp
notify-send --icon=/usr/share/pixmaps/debian-logo.png ' conversion 3gp terminée'

la hauteur -1 c'est pour garder les proportions par rapport à la taille d'image d''origine mais parfois le calcul ne tombe pas juste et il faut modifier pour mettre une valeur la plus proche de celle de message d'erreur affiché.

Par exemple un fichier .ts de 122 Mio
Stream #0:0[0x100]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1080x1920, 25 fps, 25 tbr, 90k tbn, 50 tbc
est réduit a 9,2 Mio

  Metadata:
    major_brand     : 3gp6
    minor_version   : 256
    compatible_brands: 3gp6isomiso2avc1
  Duration: 00:05:07.13, start: 0.000000, bitrate: 248 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 480x854, 125 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Dernière modification par grandtoubab (Le 23/06/2021, à 13:17)


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#20 Le 23/06/2021, à 15:32

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Merci grandtoubab, je ferai certainement un script pour visionner les vidéos sur smartphone (1440*720), mais actuellement mon script est destiné à un écran 24 pouces en 1920*1080, et je ne veux pas réduire mes vidéos 1920*1080 en 854*480.

Édit : C'est pour cela que je passe par vp9 et WebM pour garder le 1920*1080 si nécessaire, tout en divisant entre 2 et 4 la taille du fichier sans nuire visuellement à la vidéo.

PS : quitte à utiliser x264, essaye x265 !

Dernière modification par Compte supprimé (Le 23/06/2021, à 15:36)

#21 Le 23/06/2021, à 17:18

grandtoubab

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

le x265 n'est pas compatible avec le conteneur 3gp
https://www.online-convert.com/fr/format-fichier/3gp
l'interet de faire du video x264, audio aac dans un conteneur 3gp c'est que je peux transférer mes vidéos à des gens qui ont des vieux smartphones, généralement ça marche partout

NB faut pas confondre la définition de l'image  et la taille de l'appareil sur lequel on visiualise

https://www.son-video.com/guide/compare … p-4k-et-8k

Dernière modification par grandtoubab (Le 23/06/2021, à 17:58)


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#22 Le 23/06/2021, à 19:42

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

Bonsoir, voilà où j'en suis :

#!/bin/bash 
# convertir vidéos en vp9
# LDVC@
# 202106210118 202106221624 202106232036
# débogué par kamaris
# 202106220027

debut_heure_turbo=7
threads_heure_turbo=3
debut_heure_calme=19
threads_heure_calme=2
suppression_automatique=0 # 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}"
}
 
sleep 3
for fichier in *.*
do
	echoBlue "traitement du fichier " "$fichier"
	date
	if [ "${fichier: -1}" != "+" ]
	then	
		echo "le fichier n'est pas protégé par un + à la fin du nom de fichier dans l'extension."
		if [ "$(file -b "$fichier")" != "WebM" ]
		then	# $fichier n'est pas WebM.
			echoRed "$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"
				taille1=$(stat -c%s "$fichier")
				taille2=$(stat -c%s "$fichier.webm")
				echoGreen "TAILLES : $taille1 et $taille2" #débogage.
				duree1=$(mediainfo --Inform="General;%Duration%" "$fichier")
				duree2=$(mediainfo --Inform="General;%Duration%" "$fichier.webm")
				echoGreen "DURÉES : $duree1 et $duree2" #débogage.
				if (( (duree1-duree2)>50 || (duree2-duree1)>50 ))	#(( (${((duree1-duree2))#-})>50  ))  #si la valeur absolue de la différence fait plus de 50ms.
				then	#Les durées sont différentes
					echoRed "LES DURÉES SONT DIFFÉRENTES : originale=$duree1 et conversion=$duree2."
				else	#Les durées sont pratiquement les mêmes.
					echoGreen "Les durées sont pratiquement les mêmes à moins de 50 ms."
					if (( taille1 > taille2 ))
					then	#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
							echoRed "Effacement de $fichier"
							rm -f "$fichier"
						else
							echoGreen "SIMULATION EFFACEMENT de $fichier"
						fi
					else	#le fichier vidéo original est moins volumineux que le fichier recompressé VP9
						echoBlue "Le fichier vidéo original est moins volumineux que le fichier recompressé VP9."
						if ((suppression_automatique==1))
						then
							echoRed "Effacement de $fichier.webm"
							rm -f "$fichier"
							echoRed "Renommage de $fichier en $fichier+"	#on protège le fichier de ce script de conversion en ajoutant un +
							mv "$fichier" "$fichier+"
						else
							echoGreen "SIMULATION EFFACEMENT de $fichier.webm"
							echoGreen "SIMULATION RENNOMAGE de $fichier en $fichier+"
						fi
					fi
				fi
			else 
				if (( -n $(file -b --mime-type "$fichier"|grep video )))
				then 	#création de la conversion du fichier vidéo en WebM.
					echoBlue "conversion $fichier en $fichier.webm"
					heure=$(date +%H)
					echoBlue "débogage : heure=$heure"
					if ((heure > debut_heure_turbo && heure < debut_heure_calme))
					then 
						echoGreen "heure turbo : compression avec $threads_heure_turbo threads-coeurs-CPU."
						ffmpeg -i "$fichier" -c:v:0 libvpx-vp9 -filter_threads $threads_heure_turbo -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;
					else
						echoGreen "heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."
						ffmpeg -i "$fichier" -c:v:0 libvpx-vp9 -filter_threads $threads_heure_calme -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
				else	# $fichier n'est pas vidéo
					echoRed "$fichier n'est pas un ficher vidéo."
				fi
			fi			
		fi
		echo
		echo
	fi
done
echoGreen 'Fini.'
#sleep 180
exit

On remarque le contournement de la valeur absolue par un double test :

				if (( (duree1-duree2)>50 || (duree2-duree1)>50 ))	#(( (${((duree1-duree2))#-})>50  ))  #si la valeur absolue de la différence fait plus de 50ms.

J'ai ajouté cette sécurité avant d'effacer les vidéos si jamais les durées ne sont pas les mêmes à moins de 50ms d'écart.

Sinon le test compact ressemblerait à : if (( (${((duree1-duree2))#-})>50  )) (avec quelques erreurs de substitutions non-résolues.

Édit : j'ai un bogue qui apparait parfois à cette ligne :

				if (( -n $(file -b --mime-type "$fichier"|grep video )))

avec l'erreur : ./vp9.sh: ligne 81: ((: -n video/mp4 : erreur de syntaxe dans l'expression (le symbole erroné est « video/mp4 »)

Je vais continuer de lire OpenclassRoom ce soir ! wink
Bonne soirée.
Cordialement.

Dernière modification par Compte supprimé (Le 23/06/2021, à 20:51)

#23 Le 23/06/2021, à 19:54

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

if (( -n $(file -b --mime-type "$fichier"|grep video )))

ne fait pas ce que tu penses : -->

if file -b --mime-type "$fichier" | grep -q video

Hors ligne

#24 Le 23/06/2021, à 20:04

Compte supprimé

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

kamaris a écrit :
if (( -n $(file -b --mime-type "$fichier"|grep video )))

ne fait pas ce que tu penses : -->

if file -b --mime-type "$fichier" | grep -q video

Merci kamaris !
Je ne comprends toujours pas pourquoi, mais ta solution fonctionne en effet et je me suis encore planté dans les substitutions, il faut que je continue de lire ma formation BASH OpenclassRoom…

édit : bien le grep -q… ça viendra avec l'expérience…

    -q, --quiet, --silent
              Silencieux ;  ne  rien écrire sur la sortie standard. Quitter immédiatement avec un code zéro si une correspondance a été trouvée même si une erreur a été détectée. Voir aussi l'option -s ou --no-messages.

Dernière modification par Compte supprimé (Le 23/06/2021, à 20:06)

#25 Le 23/06/2021, à 20:11

kamaris

Re : [RÉSOLU] Script 1, compression adaptative vidéos fonctions de l'heure.

L_d_v_c@ a écrit :

je me suis encore planté dans les substitutions

C'est surtout l'évaluation arithmétique qui est inadaptée ici : la substitution de commande est correcte, mais elle est inutile, car grep -q est fait pour tester ça directement.

Dernière modification par kamaris (Le 23/06/2021, à 20:13)

Hors ligne