Comparaison deux mkv en images

Modérateur: Modérateurs

Comparaison deux mkv en images

Messagepar Darkshaka » Mar 06 Déc, 2011 10:35

Bonjour à tous,

Fan d'anime depuis très longtemps, je ne cesse de chercher la meilleure qualité pour les séries que je préfère.

Malheureusement, c'est souvent un casse-tête chinois compte tenu des différents codecs / résolutions / qualités d'encodage de chaque version.

Il y a de cela quelques années, j'avais trouvé un script avisynth qui permettait de comparer deux encodages différents en mettant une image en dessous de l'autre. On cliquait sur le fichier avisynth et ce dernier générait un nombre d'images défini pour les deux encodages, seulement depuis je l'ai perdu.

Ce que je cherche aujourd'hui s'en rapproche un peu : j'aimerais pouvoir comparer deux mkv en images à la frame près afin de voir lequel des deux a la meilleure qualité. Je sais comment le faire à la mano mais j'aimerais avoir une méthode automatique...

Est-ce que vous auriez un exemple de script à me fournir pour réaliser cela ?
Ou même une méthode qui me donne le même résultat sans avoir à passer par avisynth ?

Merci d'avance pour votre coup de main :)
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar Subbat » Mar 06 Déc, 2011 10:42

Salut Darkshaka, et :welc sur le forum...

Je n'ai pas la solution... Par contre, je ne comprend pas ce que tu entends par "mano' et "automatique"...
Image
Image Image
Avatar de l’utilisateur
Subbat
Administrateur
Administrateur
 
Messages: 8388
Inscription: 11 Déc 2008
Localisation: Quelque part... dans le centre de la France...

Messagepar leon1789 » Mar 06 Déc, 2011 11:07

Pour comparer deux vidéos V1 et V2, l'une sous l'autre :
Code: Tout sélectionner
V1 = ...
V2 = ...
return StackVertical(V1, V2)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Darkshaka » Mar 06 Déc, 2011 11:35

Salut Subbat,

Quand je dis à la "mano" je veux dire que je lisais la vidéo 1 avec vlc, je faisais pause à une certaine frame et je faisais un screenshot, même chose pour la vidéo 2, un peu barbant quand tu veux comparer plusieurs scènes différentes...

Pour la méthode "automatique", il me semble que leon a vu juste, c'était une formule du genre stackvertical.
En gros les trois petits points sont les endroits où l'on va chercher les vidéos sur le pc ? Et comment faire pour définir le nombre d'images, le nombre de frames à sauter pour la prochaine image ?

Il faut que je me remette dans les scripts avs, cela fait au moins 3 ans que je n'y ai pas touché.
Pour que ce soit clair, il faut que j'ouvre la vidéo 1 avec m4ng et que j'édite le document texte en avs pour rajouter la vidéo 2 avec l'exemple de leon ?

Je suis pas chez moi donc je ne peux pas tester tout de suite...

Merci pour vos réponses rapides en tout cas ;)
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar Subbat » Mar 06 Déc, 2011 11:40

Ok, je comprends...

Pour le reste, je laisse la place aux autres...
Image
Image Image
Avatar de l’utilisateur
Subbat
Administrateur
Administrateur
 
Messages: 8388
Inscription: 11 Déc 2008
Localisation: Quelque part... dans le centre de la France...

Messagepar leon1789 » Mar 06 Déc, 2011 18:17

Darkshaka a écrit:En gros les trois petits points sont les endroits où l'on va chercher les vidéos sur le pc ?

oui, c'est bien ça.

Darkshaka a écrit:Pour que ce soit clair, il faut que j'ouvre la vidéo 1 avec m4ng et que j'édite le document texte en avs pour rajouter la vidéo 2 avec l'exemple de leon ?

oui, c'est bien ça.

Darkshaka a écrit: Et comment faire pour définir le nombre d'images, le nombre de frames à sauter pour la prochaine image ?

heu, là je ne comprends pas.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Mar 06 Déc, 2011 18:18

Quelque chose comme ça doit pouvoir faire l'affaire :

Code: Tout sélectionner
# Source vidéo 1
v1 =DirectShowSource("X:\XXXXXX\1.mkv", false).Subtitle("vidéo 1").Trim(debut,fin)

# Source vidéo 2
v2 = DirectShowSource("X:\XXXXXX\2.mkv", false).Subtitle("vidéo 2").Trim(debut,fin)

StackVertical(v1, v2)
SelectEvery(intervalle, 0)
ConvertToRGB24()
ImageWriter(file="X:\XXXXXX\", type="png")
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar Darkshaka » Mer 07 Déc, 2011 17:32

Merci Underground, me semble que c'est ça ;)

Leon quand je parlais des intervalles et des frames, je voulais parler des trimm (début, fin) en fait.

C'est à dire le choix de la séquence à utiliser pour la génération d'images.

Je vais tester ça rapidos pour voir ce que ça donne.

Merci à vous tous !
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar elcascador972 » Mer 07 Déc, 2011 21:20

Bonsoir !
La solution que donne Undergound78 au post de Darkshaka m'intéresse pour pouvoir comparer 2 vidéos l'une sous l'autre en même temps sur le même écran de PC mais...le code donné se place où exactement ? Et comment parvenir à ce "ou" ? Faut il en plaçant le code entrer le chemin des 2 vidéos dans le texte du code à la place des "XX" (je suppose que oui :hop: ) ? Bref, une explication détaillée m'intéresse fortement ! Merci par avance ! :d:
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Messagepar Underground78 » Mer 07 Déc, 2011 21:50

Mon script exporte des images des deux vidéos superposées à intervalle régulier, je sais pas si c'est exactement ce que tu veux.

Sinon oui, il faut remplacer les chemins par ceux réels et régler les paramètres début et fin pour les deux vidéos (exprimés en nombre de trames), pareil pour l'intervalle qui est à remplacer aussi par un nombre de trames.
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar elcascador972 » Jeu 08 Déc, 2011 12:05

Underground78 a écrit:Mon script exporte des images des deux vidéos superposées à intervalle régulier, je sais pas si c'est exactement ce que tu veux.
J'avais mal compris...je pensais qu'il permettait (via la prévisualisation de m4ng) de visionner 2 vidéos "l'une sous l'autre" pour pouvoir comparer la qualité de 2 encodages d'une même vidéo réalisés avec des codecs / paramètres différents. Mais la solution d'exporter des images prises à intervalle régulier me convient bien, à défaut du reste. Donc déjà merci !

Underground78 a écrit:Sinon oui, il faut remplacer les chemins par ceux réels et régler les paramètres début et fin pour les deux vidéos (exprimés en nombre de trames), pareil pour l'intervalle qui est à remplacer aussi par un nombre de trames.
Si je comprends bien, les "trames" sont le numéro des images de début et fin : en clair j'indique par ce moyen là la portion de vidéo sur laquelle je veux que les images soient extraites ? Bon, "l'intervalle" c'est l'intervalle d'extraction des images depuis les vidéos, ça j'ai bien compris. Reste que ce script...je le mets où ? Je pensais ouvrir m4ng, charger la vidéo 1, éditer le script AVIsynth, copier-coller ton script dedans mais ou ?Bref, autant je me débrouille pas trop mal pour utiliser m4ng, autant là je suis limite dépassé :roll:
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Messagepar Underground78 » Jeu 08 Déc, 2011 19:09

elcascador972 a écrit:
Underground78 a écrit:Mon script exporte des images des deux vidéos superposées à intervalle régulier, je sais pas si c'est exactement ce que tu veux.
J'avais mal compris...je pensais qu'il permettait (via la prévisualisation de m4ng) de visionner 2 vidéos "l'une sous l'autre" pour pouvoir comparer la qualité de 2 encodages d'une même vidéo réalisés avec des codecs / paramètres différents. Mais la solution d'exporter des images prises à intervalle régulier me convient bien, à défaut du reste. Donc déjà merci !

Ah bah tu peux, il suffit de reprendre le premier script proposé par Léon.

elcascador972 a écrit:
Underground78 a écrit:Sinon oui, il faut remplacer les chemins par ceux réels et régler les paramètres début et fin pour les deux vidéos (exprimés en nombre de trames), pareil pour l'intervalle qui est à remplacer aussi par un nombre de trames.
Si je comprends bien, les "trames" sont le numéro des images de début et fin : en clair j'indique par ce moyen là la portion de vidéo sur laquelle je veux que les images soient extraites ? Bon, "l'intervalle" c'est l'intervalle d'extraction des images depuis les vidéos, ça j'ai bien compris. Reste que ce script...je le mets où ? Je pensais ouvrir m4ng, charger la vidéo 1, éditer le script AVIsynth, copier-coller ton script dedans mais ou ?Bref, autant je me débrouille pas trop mal pour utiliser m4ng, autant là je suis limite dépassé :roll:

Trame est ici synonyme d'image donc c'est bien le numéro des images (tu peux faire les conversions en multipliant le temps par le framerate ou en divisant le numéro de trame par le framerate).
Si tu veux juste comparer deux vidéos, pas la peine de passer par m4ng, tu crées un fichier .avs, tu mets le script dedans et tu mets les chemins qu'il faut puis tu ouvres dans ton lecteur classique.
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar elcascador972 » Jeu 08 Déc, 2011 23:17

Je testerai tout ça tranquillement ce WE. Merci pour les explications !
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Messagepar Darkshaka » Mar 13 Déc, 2011 20:12

Hello,

J'ai testé le script avec deux vidéos et j'ai un message d'erreur :
invalid arguments to function "DirectShowSource"

(G:\ANIMES FILM\STEAMBOY\comparaison.avs, line 2).

Voici le contenu du script :
Code: Tout sélectionner
# Source vidéo 1
v1 =DirectShowSource("G:\ANIMES FILM\STEAMBOY\WSA.mkv", false).Subtitle("vidéo 1").Trim(debut,fin)

# Source vidéo 2
v2 = DirectShowSource("G:\ANIMES FILM\STEAMBOY\THORA.mkv", false).Subtitle("vidéo 2").Trim(debut,fin)

StackVertical(v1, v2)
SelectEvery(intervalle, 0)
ConvertToRGB24()
ImageWriter(file="G:\ANIMES FILM\STEAMBOY\", type="png")


Une idée de pourquoi cela ne marche pas ?
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar elcascador972 » Mar 13 Déc, 2011 20:21

Je ne suis pas sûr mais je pense qu'il faut préciser, dans les parenthèses de DirectShowSource, après le chemin de la vidéo, quelquechose qui doit être du genre [, fps=23.976000] (c'est un exemple de valeur, il faut prendre celui de la vidéo). Je pense aussi que les valeurs de Trim dans les parenthèses en lieu et place de "début" et "fin" doivent être remplacées par des chiffres (numéros des frames de départ et de fin) mais évidemment, je laisse les experts confirmer !
Dernière édition par elcascador972 le Mar 13 Déc, 2011 20:43, édité 1 fois.
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Messagepar Underground78 » Mar 13 Déc, 2011 20:43

Essaie false avec un F majuscule juste pour être sûr.
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar Darkshaka » Mar 13 Déc, 2011 20:54

Re,

J'ai essayé avec les modifs mais toujours en erreur :

Code: Tout sélectionner
# Source vidéo 1
v1 =DirectShowSource("G:\ANIMES FILM\STEAMBOY\WSA.mkv", fps=23.976000, False).Subtitle("vidéo 1").Trim(0,10000)

# Source vidéo 2
v2 = DirectShowSource("G:\ANIMES FILM\STEAMBOY\THORA.mkv", fps=23.976000, False).Subtitle("vidéo 2").Trim(0,10000)

StackVertical(v1, v2)
SelectEvery(intervalle, 0)
ConvertToRGB24()
ImageWriter(file="G:\ANIMES FILM\STEAMBOY\", type="png")


Est-ce que cela peut venir de ma config pc ?
j'ai installé le dernier pack cccp et mpc hc + vlc la dernière version.

Merci ;)
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar leon1789 » Mar 13 Déc, 2011 20:55

Underground78 a écrit:Essaie false avec un F majuscule juste pour être sûr.

non, ce n'est pas ça car avisynth assimile majuscules et minuscules.

en revanche, il faut préciser quel booléen de directshowsource on veut mettre à false (le second argument par défaut de directshowsource n'est pas un booléen, mais fps). Si on ne sait pas de quel booléen il s'agit, alors il n'y a qu'à effacer false !
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Mar 13 Déc, 2011 21:11

C'est audio=false je pense.
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar Darkshaka » Mar 13 Déc, 2011 22:49

C'est bon ça marche grâce à quelques retouches, merci pour les pistes !

Voici le code qui marche chez moi pour ceux qui en ont besoin :

Code: Tout sélectionner
# Source vidéo 1
v1 =DirectShowSource("G:\ANIMES FILM\STEAMBOY\WSA.mkv", fps=23.976000, audio=False).Subtitle("WSA").Trim(0,100000)

# Source vidéo 2
v2 = DirectShowSource("G:\ANIMES FILM\STEAMBOY\THORA.mkv", fps=23.976000, audio=False).Subtitle("THORA").Trim(0,100000)

StackVertical(v1, v2)
SelectEvery(last, 300, 0)
ConvertToRGB24()
ImageWriter(file="G:\ANIMES FILM\STEAMBOY\", type="png")



Par contre, lorsque j'essaie de comparer les deux images l'une sur l'autre, les mauvais angles de vision de mon écran m'empêche d'avoir une bonne comparaison.
Comment faire pour faire des images pour une seule vidéo ? Je pensais utliser ensuite ce site pour avoir une meilleure comparaison.

J'ai essayé ce script mais visiblement il y a un truc qui cloche dans le stackvertical. Une idée de la syntaxe à adopter dans le cas d'une seule vidéo ?

Code: Tout sélectionner
# Source vidéo 1
Video=DirectShowSource("G:\ANIMES FILM\STEAMBOY\WSA.mkv", fps=23.976000, audio=False).Subtitle("WSA").Trim(0,100000)

StackVertical(Video)
SelectEvery(last, 300, 0)
ConvertToRGB24(Video)
ImageWriter(file="G:\ANIMES FILM\STEAMBOY\", type="png")


Désolé pour pour les nombreux allers retours mais on y est presque et j'arrête de vous embêter ;)
Darkshaka
 
Messages: 6
Inscription: 06 Déc 2011

Messagepar Underground78 » Mar 13 Déc, 2011 23:40

Si tu ne veux qu'une vidéo, tu peux enlever la ligne "StackVertical(Video)".
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar pepsilite » Mer 14 Déc, 2011 0:16

Le stackvertical est pour aligner 2 vidéos en hauteur, si tu n'en définis qu'une, il n'aime pas, c'est sûr ...
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22947
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar elcascador972 » Mer 14 Déc, 2011 0:29

Je respecte l'objectif de Darkshaka mais si le but est de comparer 2 vidéos, pourquoi ne pas le faire "directement" en les lisant et non à partir d'images extraites ? Car grâce au post de Darkshaka, à l'intervention de Léon1789 puis Underground78 sur ce même post puis in fine Pepsilite sur un post perso, ce WE est né ce script :



Il permet de comparer en temps réel (en les lisant simultanément sur le même écran devrais je dire) 2 moitiés (gauche en l'occurrence) de 2 vidéos différentes pour peu que la résolution (l = largeur de trame et H = hauteur de trame) soit identique aux 2 vidéos. Enfin, c'est juste une proposition :glups: .

Par exemple, une illustration de la différence pour un débit de 400 kbps et 2 passes entre Xvid et x264cli (réglage "DXVA Standard Def" + slow + films") ci-dessous, réalisée avec le script (et évidemment une capture d'écran !)



La partie gauche est en XVid et la droite en X264 : regarder le détail des colonnes et le chameau en arrière plan...no comment !
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Messagepar pepsilite » Mer 14 Déc, 2011 2:33

Ben ouais, la momie est plus belle en x264 ...
Sauf que là, les deux images ne sont pas prises au même endroit dans la vidéo...
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22947
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar elcascador972 » Mer 14 Déc, 2011 2:58

pepsilite a écrit:Ben ouais, la momie est plus belle en x264 ...

Effectivement, c'est La Momie... Monsieur est cinéphile ou alors tu as un truc... car reconnaitre le film en 1 image sur plus de 150 000 (me souvient plus du nombre exact), je dis "respect" :rital: .
pepsilite a écrit:Sauf que là, les deux images ne sont pas prises au même endroit dans la vidéo...

Je sais bien mais je n'ai pas l'explication. Ou plutôt, le fait est que, curieusement, en faisant quelques avances rapides sur le lecteur Windows lorsque les 2 vidéos sont lues via le script, il se produit un micro décalage qu'on voit sur la capture d'ecran :roll: . Pourtant, le débit est identique à l'encodage et le fps aussi...c'est peut-être du à Windows Vista ?

J'imagine qu'avec le script d'Underground78 qui extrait l'image de chaque vidéo au numéro près à un intervale déterminé, je n'aurai sans doute pas eu ce décalage...
Quand le sage montre la lune, le fou regarde le doigt
Avatar de l’utilisateur
elcascador972
 
Messages: 402
Inscription: 13 Mai 2011
Localisation: 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Suivante

Retourner vers Scripts Avisynth

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités