Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

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.

#51 Le 28/06/2021, à 14:40

MicP

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

Bonjour

Pour accéder directement à la description de la commande interne shopt dans les pages man de bash

man --pager='less -p "shopt \["' bash

=======

man --pager='less -p "  globstar"' bash
man --pager='less -p "  nullglob"' bash

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


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#52 Le 28/06/2021, à 14:44

Compte supprimé

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

MicP a écrit :

Bonjour

Pour accéder directement à la description de la commande interne shopt dans les pages man de bash

man --pager='less -p "shopt \["' bash

Merci. Je viens de comprendre que ce sont des sous-commandes de BASH, j'avoue que je ne l'ai pas vu dans mon autoformation OpenclassRoom.

Puis-je également te citer MicP pour ta participation ?

#53 Le 28/06/2021, à 14:44

MicP

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

Avec plaisir smile

Mais en fait tout ce que je sais du bash
je l'ai appris en lisant beaucoup de messages de Watael lol

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


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#54 Le 28/06/2021, à 14:48

Watael

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

shopt est une commande interne de bash; sa description complète est accessible dans le man (de bash), comme l'a montré MicP, ou via help shopt.


Welcome to sHell. · eval is evil.

Hors ligne

#55 Le 28/06/2021, à 14:52

MicP

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

Oui, et il y a même une page man spécifique aux commandes internes (builtins) du bash :

man builtins

Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#56 Le 28/06/2021, à 14:58

Compte supprimé

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

Watael a écrit :

c'est une mauvaise pratique, S'il existe un fichier fi chi er, ta boucle fera patatras.

ceci descend dans les sous-répertoires, et protège les noms de fichiers qui contiendraient des espaces :

shopt -s nullglob globstar
for f in ./**
do
    if [[ $(file... "$f") =~ video ]]; then echo "fichier à traiter : $f"; fi
done

tu peux me citer. smile

Après bien des essais, j'ai cru que je devais modifier mon test… pour traduire :

    if [[ $(file... "$f") =~ video ]]; then echo "fichier à traiter : $f"; fi

en quelque chose comme :

	if [[ [ "${fichier: -1}" != '+' ] &&  $(file -b --mime-type "$fichier") =~ video ]]

Mais en fait, pas du tout, cette ligne de tests doit rester inchangée… smile

	if [ "${fichier: -1}" != '+' ] && file -b --mime-type "$fichier" | grep -q video

Il n'y a que :

for fichier in *.*

à transformer en

for fichier in ./**

Et ça semble bien fonctionner !!! big_smile

Et voilà ce que ça donne :

#!/bin/bash
# vp9.bash 
# convertir vidéos en vp9
# LDVC@
# 202106210118 202106221624 202106232147 202106251226 202106261046 202106281459
# 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 ./**
# aide de documentatiors par MicP
# 202106281540

sleep 3

debut_heure_turbo=07
threads_heure_turbo=3
debut_heure_calme=19
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 () {
	echo $(mediainfo --Inform="General;%Duration%" "$1")
}

#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)>100 || (duree2-duree1)>100 ))	#(( (${((duree1-duree2))#-})>100  ))  #si la valeur absolue de la différence fait plus de 100ms.
	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 100 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"
			echoBlue "Rennomage de $fichier.webm en $fichier.webm+"
			mv "$fichier.webm" "$fichier.webm+"
		else
			echoGreen "SIMULATION SUPPRESSION de $fichier"
			echoBlue "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"
		echoBlue "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 [ "${fichier: -1}" != '+' ] && file -b --mime-type "$fichier" | grep -q video
	then	
		echoGreen "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 $fichier\nen $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	
			ffmpeg \
				-i "$fichier" \
				-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
			fi
			comparaison_nettoyage "$fichier"
		fi
	else	# $fichier ne sera pas traité.
		echoRed "$fichier ne sera pas traité."
	fi
	echo
done
echoGreen 'Fini.'
sleep 180
exit

C'est allé quand même plus vite avec votre aide !
Maintenant je vais quitter le fauteuil roulant qui commence à faire mal au derrière, quitter les lunettes, m'allonger sur le lit et lire les "courtes" documentations de MicP pour comprendre ce qui est fait dans ce script, dont le plus difficile est fait.

Mais qui va peut-être encore évoluer…

Bonne fin de journée à tous ! big_smile

PS : Oui, on m'avait conseillé man bash… mais c'est hyper long à lire, mais je préfère lire pendant que l'ordinateur se débrouille tout seul maintenant…

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

#57 Le 28/06/2021, à 16:06

Compte supprimé

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

PS : incroyable ! J'avais deux fichiers du même nom, et j'avais publié la mauvaise version. C'est corrigé ! tongue

Édit : purée de tabulation !!! Corrigé.

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

#58 Le 28/06/2021, à 18:51

MicP

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

Il vaut mieux ne pas utiliser le caractère de tabulation dans les scripts
utilise plutôt des suites de caractères espace.

=======
Ligne 122

heure=$(date '+%H')

à remplacer par :

heure=$(date '+%-H')

=======
Lignes 130, 131 et 132

echo	Green "Heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."
thre	ads_horaire=$threads_heure_calme
echo	Green "Heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."

à remplacer par :

echoGreen "Heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."
threads_horaire=$threads_heure_calme
echoGreen "Heure calme : compression avec $threads_heure_calme threads-coeurs-CPU."

Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#59 Le 28/06/2021, à 19:11

Compte supprimé

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

Merci MicP. Les tabulations, c'est fait, mais j'avais laissé passer l'erreur ligne 122.

#60 Le 28/06/2021, à 19:27

Compte supprimé

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

PS : Je ne comprends pas l'erreur ligne 122, car d'après man :

man bash a écrit :
…
 %H     heure (00..23)
…

Les deux versions semblent fonctionner. À quoi sert le tiret, ici ?

heure=$(date '+%-H')

#61 Le 28/06/2021, à 20:48

MicP

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

L_d_v_c@ a écrit :

… À quoi sert le tiret, ici ? …

À éviter de provoquer l'erreur que tu avais citée dans ton message #27 :

Dans son message #27, L_d_v_c@ a écrit :


Voici le problème :

					echoBlue "débogage : heure=$heure"
					if ((heure > debut_heure_turbo && heure < debut_heure_calme))
					then 

qui engendre cette erreur :

Débogage : heure=09
./vp9.bash: ligne 87: ((: 09 : valeur trop grande pour la base (le symbole erroné est « 09 »)
Heure calme : compression avec 2 threads-coeurs-CPU.

=======
D'ailleurs, dans ton script tu devrais changer :

debut_heure_turbo=07

par :

debut_heure_turbo=7

parce que quand tu voudras changer debut_heure_turbo pour 08 (ou 09) tu vas retrouver le même problème :
un message d'erreur du genre :

 … ligne 87: ((: 08 : valeur trop grande pour la base (le symbole erroné est « 08 »)

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


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#62 Le 28/06/2021, à 21:29

Compte supprimé

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

D'accord.
Merci MicP.
Comment le savais-tu ? car apparemment ce n'était pas ecrit dans le man ?
Pourquoi n'est-ce pas implicite et que ce soit si compliqué alors que les langages de programmation sont censés être simples ?
Si ça continue, je vais regretter de ne pas avoir continué le langage d'assemblage pour processeurs Intel/AMD, car ça paraîssait plus simple que le BASH ! hmm

#63 Le 28/06/2021, à 21:39

MicP

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

C'est parce que, dans les doubles parenthèses (<=>"arithmetic expressions" du bash)
pour spécifier une valeur octale (base 8) on la fait précéder d'un zéro
et donc, comme en base octale 08 et 09 n'existent pas (ni aucune suite de chiffres qui commencerait par un zéro et dans laquelle il y aurait un chiffre 8 ou 9),
ça provoque le message d'erreur : …valeur trop grande pour la base…

=======

michel@debbull:~$ echo $(( 010 + 1))  # 010 est en octal <=> 8 en décimal
9
michel@debbull:~$ 
michel@debbull:~$ echo $(( 10 + 1))  # là, 10 n'est pas précédé d'un zéro => 10 est bien en notation décimale
11
michel@debbull:~$ 

=======
On peut aussi utiliser l'hexadécimal (base 16)
en faisant précéder la valeur par un zéro suivit de la lettre X :

michel@debbull:~$ echo $(( 0x10 + 1))  # 0x10 est en hexadécimal <=> 16 en décimal
17
michel@debbull:~$ echo $(( 0x1A + 1))  # 0x1A est en hexadécimal <=> 26 en décimal
27
michel@debbull:~$ 

Dernière modification par MicP (Le 28/06/2021, à 22:04)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#64 Le 28/06/2021, à 23:45

Compte supprimé

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

Ah la la !
J'avais aperçu 0x pour hexadécimal, mais je ne connaissais pas cette norme pour l'octal !
C'est incroyable que je ne puisse pas écrire l'heure sur 2 chiffres sans faire planter la routine. Et donc, plutôt qu'ajouter un tiret pour l'octal, on se retrouve à devoir écrire un tiret pour spécifier expressément qu'on écrit en décimal ?

$(date '+%-H')

Je trouve ça tordu... Mais en effet, ça explique l'erreur qu'ils ont créée par leur mauvais choix de syntaxe, selon moi, car j'espère au moins que c'est le choix de plusieurs personnes, et pas une seule.

En basic, je crois que l'écriture était toujours décimal, sauf binaire avec %10100, ou hexadécimal avec &h14, mais je ne me souviens plus de la syntaxe qu'il fallait "ajouter" pour écrire en octal, peut-être o24.
20=%10100=&h14=o24.

Je sens que l'apprentissage du BASH est parsemé d'embûches. C'est ce qui me démotive à mon vieil âge, de me lancer dans un nouveau langage de programmation... Alors que ce soir je devais lire et relire par quatre fois des chapitres en français sur le droit international pour comprendre si le droit international dispose ou non, de la peine de mort, alors que l'évolution des différents états tendent vers l'abolition...

Si déjà je ne comprends plus le français, comment puis-je apprendre des astuces cachées de BASH ? Je n'en ai certainement pas assez fait pour me laisser imprégner par la philosophie BASH.

Et ma seule motivation pour ce script, bien que personnellement très utile, est de le faire nickel et de le partager.

En plus, me connaissant, ce script a plus de chance de survie sur le forum qu'en triple exemplaires chez moi (ordinateur, NAS, disque dur externe). Ça fait 35 ans que j'ai commencé l'informatique numérique électronique, et je débute depuis moins d'un an dans la méthode des sauvegardes 3-2-1.

#65 Le 29/06/2021, à 01:36

Compte supprimé

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

J'ai tout relu depuis le début, et je me suis fait un dossier de pages internet à lire à partir de vos liens en français. C'est génial. Encore un grand merci à vous tous !

#66 Le 29/06/2021, à 02:02

Compte supprimé

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

MicP a écrit :

C'est parce que, dans les doubles parenthèses (<=>"arithmetic expressions" du bash)
pour spécifier une valeur octale (base 8) on la fait précéder d'un zéro
et donc, comme en base octale 08 et 09 n'existent pas (ni aucune suite de chiffres qui commencerait par un zéro et dans laquelle il y aurait un chiffre 8 ou 9),
ça provoque le message d'erreur : …valeur trop grande pour la base…

=======

michel@debbull:~$ echo $(( 010 + 1))  # 010 est en octal <=> 8 en décimal
9
michel@debbull:~$ 
michel@debbull:~$ echo $(( 10 + 1))  # là, 10 n'est pas précédé d'un zéro => 10 est bien en notation décimale
11
michel@debbull:~$ 

=======
On peut aussi utiliser l'hexadécimal (base 16)
en faisant précéder la valeur par un zéro suivit de la lettre X :

michel@debbull:~$ echo $(( 0x10 + 1))  # 0x10 est en hexadécimal <=> 16 en décimal
17
michel@debbull:~$ echo $(( 0x1A + 1))  # 0x1A est en hexadécimal <=> 26 en décimal
27
michel@debbull:~$ 

J'ai réussi à lire ton lien. C'est génial. Très utile et bien résumé. Un peu plus de difficultés pour comprendre la fin du texte en anglais, ça m'a permis de mieux comprendre le "non logique" : "!" et le complément à 1 avec le tilde que je ne sais pas faire sur mon smartphone.

Du coup je ne comprends pas pourquoi un tilde à la place d'un ! dans ce test :

    if [[ $(file... "$f") =~ video ]]; then echo "fichier à traiter : $f"; fi

#67 Le 29/06/2021, à 05:47

Watael

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

c'est l'une des fonctionnalités améliorées des crochets doubles : l'expression à droite de cet opérateur est considérée comme une regex.


Welcome to sHell. · eval is evil.

Hors ligne

#68 Le 29/06/2021, à 07:28

MicP

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

Dans la page man du bash

man --pager='less -p "opérateur binaire"' bash
man --pager='less -p "   BASH_REMATCH"' bash

Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#69 Le 29/06/2021, à 07:42

MicP

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

L_d_v_c@ a écrit :

Ah la la !
J'avais aperçu 0x pour hexadécimal, mais je ne connaissais pas cette norme pour l'octal !
C'est incroyable que je ne puisse pas écrire l'heure sur 2 chiffres sans faire planter la routine. Et donc, plutôt qu'ajouter un tiret pour l'octal, on se retrouve à devoir écrire un tiret pour spécifier expressément qu'on écrit en décimal ?

$(date '+%-H')

Je trouve ça tordu... Mais en effet, ça explique l'erreur qu'ils ont créée par leur mauvais choix de syntaxe, selon moi, car j'espère au moins que c'est le choix de plusieurs personnes, et pas une seule.

Le problème rencontré ici vient plutôt de l'utilisation de la sortie de la commande date qui retourne par défaut, pour simplifier l'affichage,
les heures, minutes et secondes sous la forme d'une chaîne de caractères contenant une suite de deux chiffres dont le premier est un zéro si la valeur retournée est inférieure à 10.

Logiquement, on n'écrit pas un nombre décimal en le faisant précéder d'un chiffre zéro ou d'une suite de zéros

Dernière modification par MicP (Le 29/06/2021, à 08:13)


Retour utilisable de commande
2.d  Le prompt final : - permet de s'assurer que la commande est allée à son terme,- permet de s'assurer que la réponse du système n'est pas coupée à la fin,- et fournit parfois d'autres informations, détaillées au message #42

Hors ligne

#70 Le 29/06/2021, à 12:38

Compte supprimé

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

Oui, c'est plutôt mathématiquement qu'il n'y a pas besoin de commencer un nombre par un ou des zéros… Personnellement, ça ne me dérange pas de lire les heures inférieures à 10 sur un ou deux chiffres…

En revanche, j'ai un comportement non reconnu de mon script. Par exemple, pour certains enregistrements télévisés :

echo $(file -b "France 2 - Garde alternée - 30-08-2020 21h05 01h55 (2847).ed.m2ts")
data

Le fichier.m2ts n'est pas reconnu comme vidéo, donc le script ne cherche pas à recompresser la vidéo.

Pourtant, la commande mediainfo --Inform="General;%Duration%" "France 2 - Garde alternée - 30-08-2020 21h05 01h55 (2847).ed.m2ts" sait lire ou calculer la durée de la vidéo.

echo $(mediainfo --Inform="General;%Duration%" "France 2 - Garde alternée - 30-08-2020 21h05 01h55 (2847).ed.m2ts")
5969239.000000

Est-ce que je dois tout simplement remplacer la commande file de mon test, par la commande mediainfo et retravailler mon test ? :

	if [ "${fichier: -1}" != '+' ] && file -b --mime-type "$fichier" | grep -q video

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

#71 Le 29/06/2021, à 13:04

Watael

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

aussi bien les crochets doubles que grep cherche "video", si ça n'apparaît pas dans la sortie de la commande file, ce ne sera pas trouvé ! wink et le "test" retournera faux.

mediainfo ne fait pas partie des paquets installés par défaut, mais si c'est indispensable pour identifier certains fichiers...

que dit mediainfo --Inform="General;%Format%" tonFichier.m2ts ?


Welcome to sHell. · eval is evil.

Hors ligne

#72 Le 29/06/2021, à 13:18

Compte supprimé

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

Merci Watael.

ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv/tv-Films & D.A.$ mediainfo --Inform="General;%Format%" France\ 2\ -\ Garde\ alternée\ -\ 30-08-2020\ 21h05\ 01h55\ \(2847\).ed.m2ts 
BDAV
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv/tv-Films & D.A.$ mediainfo --Inform="General;%Format%" SCARYMOVIE_\(171111_204929\).ed.mpg 
MPEG-PS
ludovic@LibraZiK:/media/nas/Datas/6To/0-système_secondaire/vidéos_secondaires/Films et reportages ++++++/tv/tv-Films & D.A.$ 

#73 Le 29/06/2021, à 13:44

Watael

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

trop précis, ça ne facilite pas la construction d'une expression de recherche.

et %Format/Info% ?


Welcome to sHell. · eval is evil.

Hors ligne

#74 Le 29/06/2021, à 17:07

Compte supprimé

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

Arf. On se casse la tête. Ça ne donne rien mais j'ai déjà la solution : je teste la durée du fichier vidéo dans mon script, si la durée existe et qu'elle est différente de 0, c'est que le ficher est reconnu comme vidéo finalement… smile

#75 Le 29/06/2021, à 17:42

Compte supprimé

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

Je vais devoir faire un mixage des deux solutions, et ne tester la durée différente de 0 que pour les fichiers data, sinon je traite tous les fichiers, et même les dossiers dans mon nouveau test :

Traitement du fichier vidéo : ./
le fichier vidéo n'est pas protégé par un + à la fin du nom de fichier dans l'extension.
./ n'est pas WebM.
[0;34mConversion ./
en ./.webm[0m
Durée de la vidéo à recompresser :  01:38:49.56001:40:55.12002:29:27.06101:18:49.44001:26:27.58101:25:12.27901:37:30.36001:24:37.95301:39:29.23901:24:40.58001:35:53.36101:27:18.65901:54:58.48802:09:58.94001:49:22.44001:30:35.09401:43:52.64000:24:36.17801:36:22.55901:36:01.74001:36:49.70501:42:53.99201:36:43.64102:00:06.56001:52:09.52802:00:48.07201:23:51.00001:25:05.31701:19:16.18801:38:43.64001:30:38.72701:46:15.70000:09:56.45801:39:54.02400:56:48.92300:04:06.88001:32:37.61500:33:22.74000:20:36.50101:28:40.34200:50:23.55600:14:54.40002:47:16.43500:03:07.16001:31:01.86700:49:34.36001:35:59.69101:37:33.21801:48:38.00102:26:21.40000:55:09.92201:36:49.78701:27:56.18401:28:12.74001:44:34.74702:31:45.792
[0;32mHeure turbo : compression avec 3 threads-coeurs-CPU.[0m
[0;32mDURÉES : 5929560.0000006055120.0000008967061.0000004729440.0000005187580.5000005112279.0000005850360.00000050779535969239.0000005080580.0000005753360.5000005238659.0000006898488.0000007798940.0000006562440.0000005435093.5000006232640.0000001476177.6250005782559.0000005761739.500000580970561739925803641.0000007206560.0000006729528.0000007248072.0000005031000510531747561885923640.0000005438726.5000006375699.500000596458599402434089232468805557614.5000002002740.00000012365015320342.0000003023556.00000089440010036435.0000001871605461866.50000029743605759691.0000005853218.00000065180018781400.0000003309921.7500005809786.5000005276184.000000529274062747479105792 et [0m
[0;32mLes durées sont pratiquement les mêmes à moins de 100 ms.[0m
[0;34mLe fichier vidéo original est plus volumineux que le fichier recompressé VP9.[0m
[0;34mEffacement de ./[0m
[0;32mRennomage de ./.webm en ./.webm+[0m

[0;31m./debug ne sera pas traité.[0m

Traitement du fichier vidéo : ./tv-Films & D.A.
le fichier vidéo n'est pas protégé par un + à la fin du nom de fichier dans l'extension.
./tv-Films & D.A. n'est pas WebM.
[0;34mConversion ./tv-Films & D.A.
en ./tv-Films & D.A..webm[0m
Durée de la vidéo à recompresser :  01:38:49.56001:40:55.12002:29:27.06101:18:49.44001:26:27.58101:25:12.27901:37:30.36001:24:37.95301:39:29.23901:24:40.58001:35:53.36101:27:18.65901:54:58.48802:09:58.94001:49:22.44001:30:35.09401:43:52.64000:24:36.17801:36:22.55901:36:01.74001:36:49.70501:42:53.99201:36:43.64102:00:06.56001:52:09.52802:00:48.07201:23:51.00001:25:05.31701:19:16.18801:38:43.64001:30:38.72701:46:15.70000:09:56.458
[0;32mHeure turbo : compression avec 3 threads-coeurs-CPU.[0m
[0;32mDURÉES : 5929560.0000006055120.0000008967061.0000004729440.0000005187580.5000005112279.0000005850360.00000050779535969239.0000005080580.0000005753360.5000005238659.0000006898488.0000007798940.0000006562440.0000005435093.5000006232640.0000001476177.6250005782559.0000005761739.500000580970561739925803641.0000007206560.0000006729528.0000007248072.0000005031000510531747561885923640.0000005438726.5000006375699.500000596458 et [0m
[0;32mLes durées sont pratiquement les mêmes à moins de 100 ms.[0m
[0;34mLe fichier vidéo original est plus volumineux que le fichier recompressé VP9.[0m
[0;34mEffacement de ./tv-Films & D.A.[0m
[0;32mRennomage de ./tv-Films & D.A..webm en ./tv-Films & D.A..webm+[0m

Traitement du fichier vidéo : ./tv-Films & D.A./48 heures de plus.ed.m2ts
le fichier vidéo n'est pas protégé par un + à la fin du nom de fichier dans l'extension.
./tv-Films & D.A./48 heures de plus.ed.m2ts n'est pas WebM.
[0;32mLe fichier ./tv-Films & D.A./48 heures de plus.ed.m2ts.webm existe.[0m
[0;32mDURÉES : 5929560.000000 et [0m
[0;32mLes durées sont pratiquement les mêmes à moins de 100 ms.[0m
[0;34mLe fichier vidéo original est plus volumineux que le fichier recompressé VP9.[0m
[0;34mEffacement de ./tv-Films & D.A./48 heures de plus.ed.m2ts[0m
[0;32mRennomage de ./tv-Films & D.A./48 heures de plus.ed.m2ts.webm en ./tv-Films & D.A./48 heures de plus.ed.m2ts.webm+[0m

[0;31m./tv-Films & D.A./48 heures de plus.ed.m2ts.webm ne sera pas traité.[0m

Traitement du fichier vidéo : ./tv-Films & D.A./48 heures.ed.m2ts
le fichier vidéo n'est pas protégé par un + à la fin du nom de fichier dans l'extension.
./tv-Films & D.A./48 heures.ed.m2ts n'est pas WebM.
[0;34mConversion ./tv-Films & D.A./48 heures.ed.m2ts
en ./tv-Films & D.A./48 heures.ed.m2ts.webm[0m
Durée de la vidéo à recompresser :  01:40:55.120
[0;32mHeure turbo : compression avec 3 threads-coeurs-CPU.[0m

et je dois vérifier mon test sur les durées de vidéos… et surtout activer la simulation, car le script avait commencé à effacer mes films… Je fatigue beaucoup plus vite qu'avant et je ne suis pas serain, plein de choses à faire et mon déménagement dans 3 semaines…

Bonne soirée.