convertir vidéo en images fixes

Le script à appliquer pour extraire les images d'une vidéo "Video.mov" devrait ressembler à ça :
set my_movie to file "Video.mov";
set len to (length of my_movie);

repeat len times increment i
begin
set my_file to i as text ;
set my_file to my_file + ".jpeg" ;

set my_frame to my_movie ;
set file my_file to my_frame ;
end
Comme tu vois, c'est assez facile à utiliser. ;)
 
sinon QT pro te fais cela sans probleme
 
tantoillane a dit:
eeeeeuuuuuuhhhh, je ne m'y connais absolument pas en scripts, il y a quelque chose à remplacer dans ton texte :confused: :rose: :rose:
Oui effectivement.

Il faut remplacer "Video.mov" par le chemin d'accès de ta vidéo.

Par exemple "/Users/ma_maison/Desktop/Exemple.mov" pour une vidéo "Exemple.mov" situé sur ton bureau, "ma_maison" étant ton dossier personnel (avec la petite maison comme icône).

C'est dans ton dossier personnel que les fichiers jpeg seront enregistrés.
 
  • J’aime
Réactions: tantoillane
PA5CAL a dit:
Oui effectivement.

Il faut remplacer "Video.mov" par le chemin d'accès de ta vidéo.

Par exemple "/Users/ma_maison/Desktop/Exemple.mov" pour une vidéo "Exemple.mov" situé sur ton bureau, "ma_maison" étant ton dossier personnel (avec la petite maison comme icône).

C'est dans ton dossier personnel que les fichiers jpeg seront enregistrés.


j'essaie ça tout de suite ... :up: :love:
 
J'ai refait le script sous forme la d'une fonction "ExtractAll", et j'y ai adjoint une autre fonction "ExtractFrame" pour l'extraction d'une seule image.

/* Conversion video->images */

/* Fonctions d'extraction - ne pas toucher
- ajouter la ligne de commande à la fin du script */

define ExtractAll ( text my_video_path )
begin
set my_movie to file my_video_path ;
set len to (length of my_movie) ;
print "Extraction de " + len + " frames" ;
set cpt to 0 ;
repeat len times increment i
begin
set my_file to i as text ;
repeat while (length of my_file < 8)
set my_file to "0" + my_file ;
set my_file to my_file + ".jpeg" ;
set my_frame to my_movie ;
set file my_file to my_frame ;
add 1 to cpt ;
if ( cpt = 100 ) then
begin
set cpt to 0 ;
print (i + 1) + " / " + len ;
end
end
end

define ExtractFrame ( text my_video_path, number i )
begin
set my_movie to file my_video_path ;
set len to (length of my_movie) ;
print "Taille de la video : " + len + " frames" ;
set my_file to i as text ;
repeat while (length of my_file < 8)
set my_file to "0" + my_file ;
set my_file to my_file + ".jpeg" ;
print "Extraction de la frame numero " + i ;
set my_frame to my_movie ;
set file my_file to my_frame ;
end

/*____________________________*/

/*
Ajouter à la fin du script la ligne de commande utilisant l'une des fonctions d'extraction.
- pour extraire la 3000ème image de VIDEO.mov, taper :
ExtractFrame("/Users/MAISON/Desktop/VIDEO.mov", 3000);
- pour extraire toutes les images de VIDEO.mov, taper :
ExtractAll("/Users/MAISON/Desktop/VIDEO.mov");
*/

Il suffit de recopier l'une des deux lignes commençant par "ExtractFrame(..." ou par "ExtractAll(..." à la fin du script, et de remplacer MAISON par le nom du dossier perso et VIDEO par le nom de la vidéo.

Sur mon Mac G4 à 1,25GHz, j'arrive à extraire 3500 images en 640x480 en 5 minutes.


EDIT: pour le coup, il m'extrait maintenant les images dans le même dossier que le script "VideoScript" (fichier avec extension .vs)...
 
Voici de quoi extraire une liste d'images. Attention, la première image est numérotée 0, et pas 1.
define ExtractListOfFrames ( text my_video_path, text my_list )
begin
set my_movie to file my_video_path ;
set len to (length of my_movie) ;
print "Taille de la video : " + len + " frames" ;
set lst to (my_list as list);
set len to (length of lst);
print "Extraction de " + len + " frames :";
repeat len times increment i
begin
set num to (lst as number);
set my_file to num as text ;
repeat while (length of my_file < 8)
set my_file to "0" + my_file ;
set my_file to my_file + ".jpeg" ;
print "- frame numero " + num ;
set my_frame to my_movie[num] ;
set file my_file to my_frame ;
end
end


ExtractListOfFrames ("/Users/MAISON/Desktop/VIDEO.mov", "100 500 600");

Dans la liste, les numéros dont séparés par des espaces. On peut en mettre autant qu'on veut (pas seulement trois).
 
Bonsoir

QTamateur fait cela très bien aussi et en plus il est gratuit


@+
 
PA5CAL a dit:
Voici de quoi extraire une liste d'images. Attention, la première image est numérotée 0, et pas 1.

Dans la liste, les numéros dont séparés par des espaces. On peut en mettre autant qu'on veut (pas seulement trois).

super génial tes scripts....
sur les 4, le premier n'est plus utile... non ?
les 3 autres me vont très bien.
si j'ose une question, est-il possible de pouvoir choisir un fichier au lancement du script, à la volée ?
est ce la même syntaxe qu'applescript ?
 
Le premier script ne sert plus à rien.
Madmac a dit:
(...) est-il possible de pouvoir choisir un fichier au lancement du script, à la volée ?
D'après la doc, oui. En pratique, je n'y suis pas arrivé. A chaque fois que j'exécute une des fonctions "Input.ChooseDirectory", "Input.ChooseFile", "Input.Number" ou "Input.Text", l'appli VideoScript quitte sans rien dire. Je ne sais pas d'où peut venir le problème...

Chez toi, que se passe-t-il si tu exécutes ça :

set x to Input.Text("Entrez un texte:");
print x;
 
PA5CAL a dit:
Le premier script ne sert plus à rien.
D'après la doc, oui. En pratique, je n'y suis pas arrivé. A chaque fois que j'exécute une des fonctions "Input.ChooseDirectory", "Input.ChooseFile", "Input.Number" ou "Input.Text", l'appli VideoScript quitte sans rien dire. Je ne sais pas d'où peut venir le problème...

Chez toi, que se passe-t-il si tu exécutes ça :

quand je clique sur "check", ça donne ça : Syntax Check Complete : No Errors found.
quand je clique sur "run", ça inscrit quelque chose (pas le temps de voir quoi, mon PwBk est trop puissant...:D :D :D :D ) et ça quitte...

----------
je l'ai refait en rajoutant wait 60 pour avoir le temps de lire; il met la même chose qu'avec "check"....
et tjrs pareil, il quitte de suite après...