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.

#126 Le 22/11/2021, à 20: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.

Hors ligne

#127 Le 22/11/2021, à 20:51

Compte supprimé

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

Watael a écrit :

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, à 19: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, à 19:56)

#129 Le 23/11/2021, à 20: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, à 16:16)

#130 Le 05/12/2021, à 16: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, à 16: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.
À+