Affichage des articles dont le libellé est imagegrab. Afficher tous les articles
Affichage des articles dont le libellé est imagegrab. Afficher tous les articles

samedi 17 novembre 2007

Imagegrab et les grandes polices

Certains utilisateurs d'ImageGrab ont des difficultés d'affichage avec mon programme. La fenêtre est décalée, si bien que les boutons utiles ne sont même plus accessibles.



Il s'avère que cela est dû à une incompatibilité d'ImageGrab 4.1.3 avec les grandes polices, utilisées de plus en plus sur les portables sous Windows Vista.

En attendant une correction de ce bug, il est toujours possible de désactiver l'utilisation des grandes polices. Chez moi l'opération est la suivante:

  1. cliquer avec le bouton droit sur l'écran (à un endroit non occupé par une fenêtre)
  2. cliquer sur propriétés
  3. cliquer sur l'onglet paramètres
  4. cliquer sur le bouton Avancé
  5. choisir l'onglet général
  6. sélectionner taille normale (96ppp) dans les paramètres ppp
  7. Ok
  8. répondre Oui -pour utiliser les polices déjà existantes
  9. redémarrer l'ordinateur
Maintenant la fenêtre d'ImageGrab devrait apparaitre normale.



Evidemment cette manip aura des impacts sur vos autres programmes, où les textes vous sembleront alors plus petits. Vous pourrez toujours revenir aux grandes polices en faisant la même opération sauf à l'étape 6, choisir grande taille (120ppp).

mercredi 11 juillet 2007

Logiciels portables

Il y a une demande croissante pour des logiciels portables, c'est-à-dire des logiciels que l'on copie sur une clé USB ou sur un disque dur externe, et que l'on peut ensuite transporter avec soi et brancher à volonté sur n'importe quel système matériel.

L'idée est vraiment intéressante, car c'est exactement l'idée inverse de celle dont rêvent toutes les grandes firmes informatiques qui voudraient nous imposer des systèmes n'ayant plus d'unités de stockage, pour que tout soit stocké sur leurs serveurs centralisés, et que nous devenions totalement dépendants de leurs services et de leurs réseaux.

Le logiciel portable permet à l'inverse de ne plus dépendre du tout du matériel, qui ne devient qu'un hôte pour notre unité de stockage portable, tout ce qui est important étant décentralisé auprès de l'utilisateur.

La première condition pour qu'un logiciel soit portable, c'est qu'il n'ait pas besoin d'inscrire des données dans le registre de Windows. Certains disent qu'il ne doit pas avoir besoin d'installation. En réalité c'est seulement l'installation dans le registre de Windows ou dans des dossiers fixes du système comme c:\windows\system32 qui doit être prohibée. Si le logiciel a une procédure d'installation qui se contente de copier des fichiers sur l'unité de stockage portable, alors cela ne nuit pas à la portabilité. Par exemple, dézipper des fichiers. S'il écrivait par contre des données dans le registre de Windows, il ne pourrait pas les transporter sur un autre ordinateur, et ne pourrait ainsi sans doute pas fonctionner sur son nouvel hôte.

Vous savez que mes logiciels n'ont pas besoin d'installation, autre que de dézipper le fichier exécutable. Ils respectent donc le 1er niveau de portabilité. Mais ils sauvent - du moins si vous l'acceptez - leurs préférences dans le registre. D'où le second niveau de portabilité à respecter: pouvoir retrouver ses préférences quel que soit le système sur lequel tourne la clé. Par exemple si vous avez un navigateur web, vous voudrez avoir toujours sous la main ses favoris. Ou si vous avez changé les couleurs dans Filmerit, il faut que ces changements suivent le logiciel dans la clé usb.

J'avais tenu compte de cet objectif sur les dernières révisions de DVdate, Filmerit et ImageGrab, en permettant à l'utilisateur de sauver ses préférences dans un fichier ini situé dans le même dossier que l'application, donc circulant avec cette dernière sur l'unité de stockage mobile.

Christophe qui travaille sur le projet liberkey, une compilation de logiciels portables gratuits que l'on peut copier sur une clé usb, me signale que cela n'est pas encore suffisant.

En effet, dans les préférences, il y a parfois l'indication d'un dossier, ou d'un fichier utilisables par le logiciel. Par exemple dans DVdate, les préférences comprennent:
  • le dossier par défaut pour ouvrir des vidéos
  • le dossier préféré ouvert par F7
  • le dossier par défaut pour ouvrir les playlist
  • le dossier pour les fichiers créés par conversion
  • l'emplacement du fichier imagegrab
  • l'emplacement de deux fichiers à lancer par F3 ou F4
Enfin, de manière moins voyante, sous le nom exename, les préférences sauvent aussi l'adresse de l'application. C'est utile pour que mes programmes puissent s'appeler l'un l'autre, en sachant où chacun a été copié.

Supposons maintenant que le fichier imagegrab soit sur la même clé usb que DVdate, sous le chemin e:\image\imagegrab.exe. Ce fichier e:\image\imagegrab.exe sera noté dans le fichier ini. Or au prochain lancement, la clé sera peut-être implantée sur un autre ordinateur et aura hérité de la lettre de lecteur F:\. Alors DVdate aura un problème car il cherchera imagegrab.exe dans le dossier e:\image\ qui n'existe pas, et qui est devenu le dossier f:\image\.

Christophe me demande d'en tenir compte dans mes logiciels, en sauvant des chemins relatifs au lieu de sauver des chemins absolus. C'est ce qu'on pourrait appeler une précaution de troisième niveau.

Cela me pose deux difficultés: d'abord une difficulté de programmation, car pour saisir des chemins j'utilise des composants de delphi qui ne fonctionnent qu'en chemin absolu.

Ensuite une difficulté de fond: pour un logiciel qui traite de vidéo numérique, il faut manipuler de très gros fichiers. Il y a donc peu de chances que le dossier où chercher ces très gros fichiers soit sur une clé usb. En revanche, il pourrait très bien être sur un disque dur externe. Dans le premier cas, il est donc inutile de transcrire son adresse en relatif, alors que dans le second cas, il faudrait y procéder. Comment faire la différence?

J'ai mis au point la solution suivante pour contourner ces difficultés, et compte l'implanter dès la prochaine révision de mes logiciels:

D'abord l'utilisateur devra indiquer s'il veut que sa version soit portable (donc enregistre ses préférences dans un fichier ini situé dans le même dossier que l'application) ou s'il veut que sa version soit normale (et enregistre ses préférences dans le registre).

S'il est dans le premier cas, au prochain lancement, le programme regardera quelle était la lettre du périphérique dans l'exécutable indiqué sous exename. C'était la lettre de l'unité usb ou disque dur externe, par exemple E:\. Ensuite il regarde quelle est la lettre actuelle du périphérique sur lequel se trouve l'application (qui par définition est considéré comme une unité de stockage portable). Par exemple F:\.

Chaque fois que dans les préférences apparaîtra un dossier ou le chemin d'un fichier commençant par la première lettre ( E:\), on corrigera cette lettre en la remplaçant par la seconde ( F:\).

De cette manière, toutes les références qui pointaient vers la clé usb (ou le disque dur externe) continueront à pointer vers la clé usb (ou le disque dur externe). Pour autant, l'utilisateur n'a absolument besoin de se préoccuper de rien, il ne verra que des chemins absolus et non relatifs, et le programme n'écrira dans le fichier ini que des chemins absolus et non relatifs. C'est DVdate qui saura relativiser tout cela au lancement.

Si Christophe lit ce billet, il me dira peut-être qu'il faut assurer un quatrième niveau de portabilité: en effet, il ne lui aura pas échappé que DVdate peut sauver l'adresse d'une playlist. Avec ma technique de 3ème niveau, si l'utilisateur prend soin de sauver la playlist dans un dossier qui figure sur la clé usb, alors DVdate pointera toujours vers ce dossier, même si la clé a été déplacée sur un autre système. Par contre, le fichier playlist.txt ainsi pointé, liste lui-même des fichiers vidéo, dont certains pouvaient être sur la clé usb. Si j'étais rigoriste, je devrais donc aussi corriger ces fichiers en changeant leur périphérique E:\ en F:\.

Je ne suis sans doute pas assez rigoriste en matière de portabilité pour aller aussi loin, car au fond je crois que ce n'est pas utile, et compliquerait les opérations de DVdate. Par contre, si je trouvais un mécanisme simple et automatique pour imposer toutes les corrections de E:\ vers F:\au fur et à mesure que l'on veut utiliser un fichier ou un dossier, sans devoir les lister a priori, je n'hésiterai pas à l'implanter.

En attendant, vous pouvez tester la clé liberkey sur laquelle vous trouverez Filmerit, en version 3.0.8, donc avec une portabilité de niveau 2 pour reprendre l'échelle ci-dessus. Et ne ratez pas la prochaine version 6.4.0 de DVdate, qui devrait avoir la portabilité de niveau 3.

samedi 16 juin 2007

Réduction des coûts avec ImageGrab

Dans un précédent billet, je me demandais à quoi servait ImageGrab. Voilà un exemple:

Un employé du groupe Thalès m'a commandé une licence pour ImageGrab, car il veut utiliser ce programme dans le cadre de ses activités professionnelles, et notamment avoir la possibilité d'automatiser l'extraction d'images d'un grand nombre de fichiers. Il travaille sur des images vidéo de visages pour constituer des bases de données de biométrie.

Son objectif est d'extraire une dizaine de milliers d'images d'un millier de fichiers video mpg, avi, wma. Dès le premier jour où je lui ai envoyé le programme sous licence, il m'a confirmé que le
premier batch (500 images, sur 50 fichiers mpg) s'est très bien passé.

Suite à ma recommandation il a aussi installé une version (gratuite) de démo de Ulead pour avoir les filtres de décompression mpeg2 qui marchent le mieux avec ImageGrab.

Voilà donc un investissement de 19€ (licence d'ImageGrab) qui est rentable: si je compte ne serait-ce qu'une minute par image extraite manuellement, il aurait dû passer 166 heures de travail, soit, à raison de 35 heures par semaine, plus d'un mois de travail sur ce projet.

Au prix où les ingénieurs et techniciens sont payés chez Thalès, cela représente donc une grande économie de coûts. J'espère que mon utilisateur économe verra sa sagacité récompensée.

lundi 28 mai 2007

Le moteur d'ImageGrab 4.1.0

J'ai publié à la fin de ce billet un lien vers la version 4.1.0 de ImageGrab. Cette version fait encore progresser l'interface de ImageGrab, mais surtout elle comprend un "moteur" amélioré pour lire les vidéos.


Voici trois exemples d'améliorations de ce "moteur":

1. la lecture des fichiers mpeg2.

Avec la version 3.0 la lecture des mpeg2 était très aléatoire, et donnait parfois seulement une image à l'envers, et au bout de multiples essais. Cette fois, si un décodeur mpeg2 approprié est installé sur votre système, ImageGrab ne devrait pas se faire prier pour donner l'image et dans le bon sens.

Qu'est-ce qu'un décodeur approprié? C'est un décodeur capable de donner l'image vidéo dans la mémoire de l'ordinateur, sans passer directement par la mémoire vidéo (overlay). Ulead ou Pinnacle fournissent de tels décodeurs. Ceux de Cyberlink ou Fraunhofer ne conviennent pas toujours. La nouveauté est que si au moins un des décodeurs appropriés est correctement installé, alors ImageGrab saura le trouver et le faire fonctionner correctement.

Ce qui vaut pour les fichiers mpeg2 vaut aussi pour les fichiers vob non cryptés. Vous pourrez donc lire et extraire des images des DVD non cryptés que vous avez fabriqués.

Vous pouvez lancer Filmerit pour avoir la liste des filtres installés sur votre système. Si vous n'arrivez pas à lire les fichiers mpeg2 avec ImageGrab, essayez d'installer une version de démonstration de Ulead ou de Pinnacle.

2. La lecture des vidéos ayant des sous-titres srt

Il suffisait parfois de lire un fichier avi doté d'un fichier de sous-titres srt pour que ImageGrab se bloque. En effet, si un fichier srt se trouve dans le même dossier que le fichier avi, et que le filtre DirectVobSub (auto-loading version) est installé sur votre système, alors ce dernier tente de s'insèrer dans le graphe de l'application multimedia , ce qui jusqu'ici bloquait ImageGrab. Cela n'est plus le cas.

A noter cependant que Imagegrab empêchant désormais ce filtre de s'insérer dans le graphe, il n'affichera pas vos sous-titres.

3. La lecture des sources vidéos Live

Vous l'aviez sans doute remarqué, ImageGrab sait lire une vidéo sur une source Live connectée à votre ordinateur. C'est une fonction prisée en liaison avec l'intervallomètre qui peut ainsi capturer une photo régulièrement. Dans la version 3.0 les sources utilisables étaient relativement peu nombreuses: ImageGrab savait lire essentiellement les caméras DV et quelques webcams. Dans la version 4.1.0 il saura lire beaucoup plus de sources, notamment les boitiers ADS Tech DVD Xpress, et donc vraisemblablement les boitiers DVC130 et DVC 170 de Dazzle (DVD Video Creator et DVD Video Creator Platinum ), mais aussi par exemple avec une carte DC30+ munie du driver de Maik.

Toutefois si votre boitier fournit une source en mpeg2, alors ImageGrab ne saura la lire que si un décodeur approprié est installé sur votre système (voir le § 1 ci-dessus).

Je serais intéressé par des commentaires sur ce point si vous avez d'autres sources de capture, disposant d'un driver compatibles avec directShow. Peut-être certains voudront faire l'essai avec une caméra HDV?

Pour essayer toutes ces nouveautés, téléchargez la version 4.1.0 en français ici

lundi 21 mai 2007

ImageGrab version 4.0.0

Une version beta de ImageGrab 4.0.0 est téléchargeable ici.
Elle fait 520K0 seulement, et pourtant comprend d'intéressantes nouveautés, que je vous livre en avant-première:
  • on peut enregistrer les préférences pour les retrouver au prochain lancement
  • la numérotation est assouplie, et on peut choisir autant de chiffres que l'on veut. La formation du nom des fichiers images est clarifiée
  • les lignes de commande sont très puissantes, j'en donne le mode d'emploi ici
  • on peut accéder aux dossiers et aux fichiers source et destination par de simples clics
  • les touches de raccourci sont plus nombreuses et sont listées dans les options (F10)
  • on peut désentrelacer les images, sans avoir besoin pour cela du filtre de désentrelacement de Pinnacle.
  • si des images existent déjà, on est mieux averti de ce fait à tout instant
Attention, cependant le "moteur" de ImageGrab n'a pas été changé. Si vous aviez du mal à charger certains fichiers vidéo, cela sera encore le cas avec ImageGrab 4.0.0.

Si vous utilisez la version 4.0.0 et avez des remarques à faire, je suis preneur bien sûr de vos réactions, soit sur ce blog, soit par e-mail.

vendredi 18 mai 2007

Comment réviser ImageGrab?

ImageGrab est l'un des plus grands succès parmi mes logiciels. Si je tape ce mot-clé dans Google, je trouve 11.400 pages web qui l'évoquent. En France, CaptureFlux a plus de succès; dans le reste du monde, DVdate a plus de succès; mais dans les deux cas, ImageGrab vient tout de suite en second, si bien que, quand je globalise, ImageGrab est sans doute le logiciel de Paul Glagla le plus téléchargé et utilisé au monde.

Je me suis parfois demandé ce qui fait le succès d'ImageGrab: si quelques passionnés l'utilisent pour des activités fort sympathiques comme étudier la vie des chauve-souris, ou analyser des séquences sportives (notamment en parachutisme), une bonne partie des utilisateurs (dont moi-même) l'utilisent principalement pour extraire des images de vidéos destinées à illustrer des pochettes de DVD ou de CD. Mais je ne me fais pas d'illusion, au fur et à mesure que je découvre de nouveaux sites ou forums qui parlent d'ImageGrab, je me rends compte qu'il y a de plus en plus de sites pornographiques qui l'utilisent pour extraire des photos à partir de vidéo X. C'est pourquoi je m'en étais un peu désintéressé depuis juillet 2004, date de sa dernière révision.

D'un autre côté, je reçois tellement de remerciements pour ce programme au fond tout simple, que je me suis décidé à le réviser maintenant, ne serait-ce que pour y introduire quelques perfectionnements qui sont dans la plupart de mes autres programmes, et qui n'avaient pas encore été introduits dans ImageGrab.

J'ouvre donc la discussion sur mon blog: quelles améliorations faut-il apporter à ImageGrab?

Il y en a quelques-unes qui sont déjà prévues:
  • permettre de sauver ses préférences, pour les retrouver au prochain lancement sans devoir tout reparamétrer.
  • permettre une numérotation plus ouverte: certains utilisateurs se plaignent d'être contraints de numéroter les images avec 4 chiffres seulement
  • ajouter et rationaliser les raccourcis clavier
  • ajouter une fonction intégrée de désentrelacement des images, pour ne pas dépendre du filtre de désentrelacement de Pinnacle
  • mieux gérer les vidéos en mpeg2 (si j'y arrive)
  • permettre d'inverser l'image
Si vous avez d'autres attentes, c'est le moment de réagir sur mon blog.

vendredi 6 avril 2007

Les fichiers scn

Un internaute hongrois me demande quelle est la structure des fichiers *.scn.

Rappelons que les fichiers *.scn sont produits par Studio de Pinnacle et contiennent les informations relatives au découpage en scènes d'un fichier vidéo. Pinnacle ne donne guère d'indications sur la structure de ces fichiers. Donc c'est en procédant à des expérimentations que j'ai pu comprendre un certain nombre des choses que je présente ici sans garanties.

J'ai implanté l'utilisation des fichiers *.scn dans ImageGrab et dans DVdate. En outre, DVdate comme CaptureFlux peuvent créer des fichiers *.scn à partir de vidéos au format DV.

En fait, ces fichiers sont inutilement complexes et redondants. Je suppose que Pinnacle les a introduits en se basant sur les fichiers de projet *.stu qu'utilise Studio. On aurait pu créer des fichiers plus simples contenant les mêmes données. C'est donc seulement parce que j'ai souhaité une compatibilité avec Studio que j'ai travaillé sur ces fichiers *.scn.

Un fichier *.scn commence par un en-tête qui en hexadécimal est le suivant:
63 26
01 00 04 00 00 00 FF FF
03 00 0A 00 'SourceTape' [len] filename 00 00 00 00 00 00 00 00 {nbscenes} FF FF
01 00 04 00 'Clip' 50 00 00 00 FF FF

Puis pour la première scène:

01 00 05 00 'Scene' 00 00 00 00 00 (scene_2) 00 00 00 00 01 80 [len] filename 00 00 00 00 00 00 00 00 (scene_2)


Puis pour chacune des scènes suivantes, notées scene_i (avec i>=2):

03 80 F0 00 00 00 05 80 00 (scene_i) (longueur_i) 00 00 00 00 07 00 (scene_i) (longueur_i) (scene_i)

Ici ma notation est la suivante:
  • [len] est la longueur du nom du fichier avi (avec son chemin complet). [len] est noté sur un seul octet.
  • filename est le nom du fichier avi avec son chemin complet
  • {nbscenes} est le nombre total de scènes - sur 2 octets
  • (scene_i) est le numéro de la frame dans le fichier avi où commence la scène i. scene_1 n'est ici pas utilisé, car il serait nul. Ce numéro est un entier codé sur 4 octets.
  • (longueur_i) est la longueur - en nombre de frames -sur 4 octets de la scène i. Donc en principe (longueur_i)=(scene_i+1)-(scene_i)
Voilà c'est un peu bizarre, mais ce n'est pas moi qui ai inventé cela. En outre, je ne garantis pas que tous les fichiers *.scn suivent strictement ce format-là. Mais les fichiers que Studio a produit chez moi le suivent, et quand DVdate produit des fichiers *.scn de ce format, ils marchent dans Studio. Alors cela doit quand même être correct.

samedi 24 mars 2007

Pourquoi un blog de Paul Glagla

Je suis l'auteur de quelques logiciels principalement dédiés à la vidéo numérique, notamment DVdate, CaptureFlux, ImageGrab et autres Filmerit ou CassetteDV qui connaissent un joli succès à la fois en France et dans le reste du monde.

Jusqu'à présent, je communiquais avec mes utilisateurs, d'une part avec mes pages web, et d'autre part par e-mail.

Mais produire des pages web est un boulot lourd et peu réactif, qui m'est très pénible, et me prend beaucoup de temps que je préfère consacrer à de la programmation.

D'un autre côté, le problème des e-mails, c'est que je reçois des dizaines de messages (sans même parler du spam) qui portent sur des tas de sujets souvent intéressants mais très spécifiques et que chaque réponse nécessite de ma part des réflexions et des recherches qui au bout du compte ne bénéficient qu'à un seul utilisateur. Du coup, je m'y investis moins. Actuellement je réponds à moins de 5% des mails que je reçois. Par contre, je lis tous les mails reçus et je finis tôt ou tard par exploiter les idées qui me sont soumises. Ce n'est donc pas inutile de continuer à m'écrire.

Devant cette situation, j'ai pensé me mettre au goût du jour et créer un blog, pour compléter mon site et mes e-mails par des communications diverses, mais d'intérêt général pour les amateurs de mes logiciels. Cela me permettra de diffuser des idées ou des commentaires et de susciter une certaine interactivité, sans efforts trop démesurés.

J'espère bien sûr avoir des réponses sur les sujets que je lancerai. C'est vital pour que mes productions progressent, car je n'ai accès qu'à très peu de matériel ou de logiciels. Je suis en effet un simple amateur dont l'équipement se limite en ce moment à

- un ordinateur Pentium4 à 3GHZ avec 512 M0 de mémoire, muni de Windows XP SP2
- un camescope Sony DCR-PC101E Pal, donc un modèle déjà assez ancien
- une webcam Logitech Clicksmart 310
- un boitier ADS Tech DVD Xpress DX2
- une ancienne carte miro DC30+

C'est avec ce matériel que je teste mes productions. Cela ne couvre donc qu'un petit champ des configurations que l'on rencontre sur le marché. D'où mon slogan: "mes logiciels fonctionnent bien chez moi, ils pourraient bien fonctionner chez vous, mais peut-être pas. Essayez vous-même, et faites moi savoir ce que cela donne."

Encore une chose: je travaille par périodes sur un programme donné. Actuellement c'est sur Filmerit. Si vous me donnez des idées ou des constatations qui concernent le programme sur lequel je suis en train de travailler, je les exploiterai beaucoup plus vite. Les autres commentaires seront stockés et vraiment utiles peut-être seulement dans quelques mois.

Pour vous permettre de cibler vos remarques, voici le planning que j'envisage pour les prochaines semaines:

D'abord terminer une version 3.0.0 de Filmerit. L'objectif principal est d'étendre ce logiciel à l'analyse et à la réparation des filtres directshow de toutes catégories. Actuellement, il ne s'occupe que des filtres qui sont en directshow natif. A l'avenir, il devrait aussi s'occuper des filtres DMO (Direct Media Object), des filtres Compression Manager, et des filtres Plug and Play. Cela devrait encore me prendre le mois d'avril.

En mai, j'ai envie de réattaquer ImageGrab qui est actuellement resté à la version 3.0 depuis juillet 2004. J'ai de nombreuses idées pour le mettre à jour, ne serait-ce qu'en y intégrant des technologies qui sont maintenant couramment intégrées dans mes logiciels plus récents: par exemple sauvegarder les préférences dans le registre, désentrelacer les images sans utiliser Studio, y incruster du texte ou une date, retourner l'image en miroir etc... Peut-être encore d'autres nouveautés.

Ensuite, cet été, je compte bien revoir CassetteDV. C'est l'un des logiciels dont je suis le plus fier, mais je vois bien qu'il crée de nombreux déçus. Il est en effet très complexe, et dépend beaucoup de chaque configuration. Il y a à l'évidence des configurations avec lesquelles il ne fonctionne pas bien, et ce sera donc l'objectif principal de la prochaine grande révision à venir que d'améliorer sa compatibilité avec davantage de situations.

Entre temps, il n'est pas exclu que je publie des versions de CaptureFlux ou DVdate corrigeant certains bugs. La version 6.3.0 de DVdate est d'ailleurs en phase de test. Si vous voulez la tester, elle est téléchargeable ici. Elle corrige quelques bugs (j'espère qu'elle n'en crée pas d'autres ce faisant !?) et apporte une petite amélioration fonctionnelle: l'incrustation peut maintenant être entourée d'un bordure noire pour que le texte incrusté ressorte mieux devant la vidéo, même quand le fond est clair.