Méthode acquisition + compression camescope - Traitement Vidéo - Video & Son
Marsh Posté le 07-02-2007 à 10:53:36
Ah, je précise quand même, certains l'auront surement remarqué: je suis pas du tout un pro de la vidéo, donc ce que j'ai fait est peut être une méthode de cochon...
Je suis donc ouvert à tous les conseils...
En particulier si le DivX n'est pas une bonne idée. Mais j'avais essayé TmpgEnc et c'état pas merveilleux...
Marsh Posté le 07-02-2007 à 13:43:40
Donc si j'ai bien compris
Tu as une methode qui s'occupe automatiquement, une fois ton camescope connecté au PC ... de découper la cassette
(détection changement de scènes) et compression en DIVX de chacune des scènes avec la date et l'heure dans le nom des fichiers
DIVX générés ...
c'est ça ?
Marsh Posté le 09-02-2007 à 07:43:08
Les réponses rapides c'est pas ton fort
apparemment snouff ;-)
Marsh Posté le 11-02-2007 à 11:05:17
Je suis curieux d'en savoir plus, dans les deux domaines abordés dans ton post:
1- la video DV->divx
et 2- le php sans serveur Web.
Donne nous des détails STP, ou renvoie nous sur un site où tu aurais déjà développé cela (téléchargement, tuto ou autre)
Marsh Posté le 11-02-2007 à 21:14:11
Ah bah flutre alors, j'avais pourtant activé la notification par mail sur ce thread... vous avez eu de la chance que je revienne faire un tour ici par hasard... Donc non du coup c'est raté pour les réponses rapides...
vttman2, oui effectivement je parle bien d'un machin qui me fait l'acquisition, le nommage et la compression avec un minimum d'efforts.
JackParis,
1- pour la compression "video DV -> divx", je passe par virtualdub. A la base tu peux ouvrir ta vidéo avec virtualdub, choisir la compression vidéo (divx par exemple), audio (mp3 par exemple), mettre des filtres ou autre et enregistrer. Si tu connais pas virtualdub il y a plein de documentation à ce sujet (en particulier sur hardware.fr je crois).
Moi dans mon cas je fais tout pareil mais par ligne de commande. C'est à dire qu'une fois les options de compression paramétrées (en lançant le logiciel normalement) tu peux les enregistrer (fichier .vcf) et tu peux ensuite passer ce fichier en ligne de commande à VD, en plus du fichier à compresser, pour qu'il sache avec quelles options compresser. Ce n'est pas absolument nécessaire car d'un lancement à l'autre VD retient les options de compresion, mais bon, c'est plus sûr comme ça.
2- concernant l'exécution de php: à la base j'ai bien un serveur web sur mon PC (apache + php). Pour cela j'ai installé "phpdev". Pour exécuter un .php sans passer par le serveur il suffit de passer le script à php.exe, mais attention, pas le php.exe qui est lié à Apache, mais un autre php.exe qui lui se trouve dans un répertoire nommé "sapi".
Bon, pour bien faire je vais essayer de poster ici les scripts php et autre.
Allons y pour un petit tuto.
1- faire un fichier "deint.avs" qui contient ceci (2 lignes):
AVISource("toto.avi" )
separatefields
... où toto.avi est l'une de vos vidéos que vous avez acquises et que vous voulez compresser.
2- lancer virtualdub, faire ouvrir et choisir "deint.avs". Paramétrer les options de compression, les filtres et autres (voir la page dont je parlais dans mon post - installez des codecs au besoin).
Enregistrer la vidéo ("fichier", "enregistrer sous" ), regardez-là et vérifier que vos options de compression vous conviennent (qualité de la vidéo, taille finale du fichier, etc)
Une fois que vos options vous conviennent, faire fichier -> "save processing settings" (ou équivalent en francais) et enregistrez le fichier sous "cam_base.vcf" (je donne les noms de fichier parce qu'ensuite je vais poster mon code en php dans lequel je mets les noms de fichier en dur dans le code)
3- créez au même endroit que le fichier "cam_base.vcf" un fichier "compress.php" qui contient le code suivant:
<?php
set_time_limit(100000); // parce que ça va être long, et sinon ça coupe au bout de 30 secondes
$dir = opendir("." );
while (($file = readdir($dir)) !== false) // pour chaque fichier
{
//echo ('lect ' . $file . "\n" );
if (strpos($file,'.avi') !== false) { // on ne traite que les .avi
echo ('lect ' . $file . "\n" );
// creation du deint.avs: même format que dans la page web dont je parlais
$deint = fopen("deint.avs", 'w');
fwrite($deint, 'AVISource("'.$file.'" )'."\n".'separatefields');
fclose($deint);
// creation du cam.vcf à passer à VD
copy('cam_base.vcf', 'cam.vcf'); // on part du fichier de base, qui contient les options de compression
$cam = fopen("cam.vcf", 'a');
fwrite($cam, 'VirtualDub.Open("E:\\\\Data\\\\Photos - Videos\\\\2006\\\\a trier\\\\compression\\\\deint.avs" );'."\n" ); // on ajoute la commande d'ouvreture du deint.avs
$nouv_fic = substr($file,0,(strlen($file)-4)).'-rec.avi'; // nom du fichier renommé: je rajoute -rec à la fin
fwrite($cam, 'VirtualDub.SaveAVI("E:\\\\Data\\\\Photos - Videos\\\\2006\\\\a trier\\\\compression\\\\comp\\\\'.$nouv_fic.'" );'); // on ajoute la commande d'enregistrement
fclose($cam);
// commande d'appel à VD
$cmde = "D:\\Programs\\Video\\VirtualDub-1.7.0\\VirtualDub.exe "
. "/s\"E:\\Data\\Photos - Videos\\2006\\a trier\\compression\\cam.vcf\" /x";
echo ("\n" . $cmde . "\n" );
echo ("->" . $nouv_fic . "\n\n" );
exec($cmde);
}
}
closedir($dir);
?>
Bon bien sûr changez tous les noms de répertoires. Je laisse les miens comme exemple pour que vous galériez pas avec les "\\\\"
Je viens de commenter le code en le copiant-collant, alors excusez moi si j'ai fait une bourde et que le code s'exécute plus.
4- maintenant il faut pouvoir exécuter le .php sans passer par le serveur (si vous avez la flemme de faire cette étape, vous pouvez allumer votre navigateur et appeler le script directement)
Créez un script "exec_php.bat" quelque part (moi je l'ai mis dans un répertoire "D:\Programs\Utils\exec_php\", et qui contient ceci (les 2 lignes suivantes):
D:\Programs\Program\phpdev\php\sapi\php.exe -q -f %1
set /P theuserinput="press enter"
note 1: je suis nul en batch, je savais pas comment faire en sorte que le script n'éteigne pas la console DOS à la fin de l'exécution. la seconde ligne du batch sert à ça (attendre un "user input" )
note 2: changez le chemin de php.exe par le vôtre (attention à ce que ce soit bien celui qui est dans "sapi\" )
Dans la base de registre (exécutez "regedit.exe" ) allez dans HKEY_CLASSES_ROOT, puis dans ".php" . notez la valeur qui est dans "data" en face de "Default".
Allez (toujours sous HKEY_CLASSES_ROOT) à la clé qui correspond à cette valeur (par exemple "php file" ). Dans "shell", ajoutez une clé "execute" et dans cette clé, une nouvelle clé "command". Dans cette dernière clé, pour la valeur "Default", tapez ceci (ce qui se trouve à la ligne suivante:
D:\Programs\Utils\exec_php\exec_php.bat "%1"
Et voilà, en cliquant avec le bouton droit sur un .php maintenant vous avez une commande "execute".
Pour compresser vos vidéos, collez-les au même endroit que votre script compress.php, puis faites "bouton droit" sur compress.php et "exécute"
Bon, je suis navré pour la qualité déplorable de ce tuto. Manque de temps...
Vous aurez noté qu'il faut pas être archi-débutant en informatique. Il vaut mieux avoir l'habitude du bricolage de base de registre, de l'appel de programmes en ligne de commande, etc.
Mais bon moi il m'a bien fallu 10 heures de travail pour monter ça, alors qu'avec ce tuto j'ai bon espoir qu'un informaticien n'ait besoin que d'un petite heure de mises au point.
Bon bah voilà, je recoche "Activer la notification par email du sujet" (qui est déjà coché d'ailleurs)
Bonne soirée à vous
Snouff ("Snouffelaire", pour être précis. Ceux qui lisaient Spirou dans leur enfance connaissent)
Marsh Posté le 12-02-2007 à 19:29:48
Un petit récapitulatif du coup:
Quand ma cassette Mini-DV est pleine:
- je branche le camescope sur mon PC
- je lance WinDV, je clique sur Capture
- quand c'est fini (après 45 minutes), je lance compress.php
- 4 heures après c'est prêt! (je lance toujours çà le soir avant de me coucher :-)
Je me permets de mettre quelques phrases à destination des moteurs de recherche:
camescope - un fichier par scène
déinterlacer / désinterlacer et compresser en masse les videos
Snouff
Marsh Posté le 07-02-2007 à 10:47:24
Hello,
Bon voilà, j'ai un appareil photo numérique depuis des années et j'ai l'habitude de prendre tout plein de photos, et quand il est plein je le vide sur mon PC, je fais juste des dossiers pour séparer les photos qui correspondent au même jour ou à la même occasion.
Quand j'ai acheté un camescope numérique (à cassette, car moins cher), j'ai eu le même besoin:
- le remplir de petites scènes prises à différentes occasions
- le vider sur mon PC quand la cassette est pleine
- simplement avoir 1 fichier par scène, avoir la date de la prise vidéo dans le nom du fichier pour pouvoir les trier
- pouvoir désinterlacer, compresser et redimensionner les vidéos (car le film pris en 16:9 s'affiche déformé en 4:3 sur la plupart des lecteurs)
.. et tout ça en 4 ou 5 clics si possible.
J'ai pas besoin de faire de montage, des effets spéciaux, ni de faire de DVD...
Je stocke simplement mes vidéos avec mes photos, rangées dans 1 répertoire par date et par occasion.
Et j'ai eu du mal à trouver mon bonheur, donc je me suis dit que je pouvais laisser un post sur un forum, des fois que ça serve à quelqu'un d'autre (pour peu que quelqu'un se serve de son camescope comme moi).
Donc d'abord, pour acquérir une cassette entière, mais en faisant 1 fichier par scène, et en mettant la date du jour où la vidéo a été prise dans le nom du fichier, je n'ai trouvé que WinDV.
J'ai pourtant testé des dizaines de programmes (notamment les plus lourds et les plus complets), mais je n'ai trouvé que celui là qui permette ça simplement en cliquant sur 1 bouton (les autres séparent la vidéo par scène, mais il faut ensuite enregistrer chaque vidéo séparément, et renseigner la date dans le nom du fichier à la mano..?)
Bref, ça permet d'avoir les vidéos sur le PC, mais interlacées, et non compressées.
Ensuite j'ai suivi les conseils de cette page: http://www.100fps.com/ (voir la méthode en bas de la page)
VirtualDub (que je connaissais déjà bien) + Avisynth + DivX:
- créer un fichier avs contenant le nom du fichier à compresser (comme indiqué sur la page)
- l'ouvrir avec VD
- positionner les options de compression (pour moi: son mp3, vidéo DivX; après plusieurs tests ça m'a paru le mieux - j'ai du installer des codecs lame pour le mp3 et divx5 car le divx6 plantait)
- mettre un filtre de redimensionnement (je préférait avoir une vraie vidéo 16:9, quitte à perdre un peu de qualité, plutot que mes vidéos s'affichent déformées 90% du temps sur les lecteurs vidéos des gens à qui j'envoyais ces vidéos...)
- pas de filtre bob comme l'indique la page web, moi je n'ai pas eu de souci de vidéo qui 'saute'
- enregistrer la vidéo ("enregistrer sous..." )
Comme c'est bien trop long de faire ça sur chaque vidéo (même si on n'a pas à remettre les filtres et la configuration de compression à chaque fois) j'ai fait un script qui le fait en masse:
Pour chaque fichier .avi dans le répertoire, fabriquer le fichier avs et appeler VD en ligne de commande.
Bon pour info j'ai pas été foutu de faire ce script en batch DOS, j'ai du le coder en PHP (je suis plus à l'aise avec le php) et me bricoler un truc pour pouvoir exécuter un .php sans passer par un serveur web. C'est très pratique d'ailleurs, je conseille la méthode à tout le monde.
Enfin bref voilà, 5 clics (et un peu de patience) et ma cassette MiniDV se retrouve en fichiers bien propres, compressés, bien découpés par scène et bien nommés sur mon PC.
Voilà, je m'arrête là, si ce post est vraiement utile à quelqu'un et que ce quelq'un a besoin de précisions (comme pour appeler VD en ligne de commande, etc), il n'aura qu'à demander...
Merci de votre attention :-)