samedi 31 décembre 2016

GraphEdit sous Windows 7.1 en 64 bits


J'ai déjà eu l'occasion d'évoquer le logiciel GraphEdit qui rend beaucoup de services à ceux qui font de la programmation avec l'architecture DirectShow de Microsoft.


J'ai eu depuis plusieurs jours un problème qui m'ennuie beaucoup: Quand on ouvre GraphEdit et qu'on veut y ajouter un filtre de la catégorie directshow, alors le programme se plante et ferme abruptement. Il était donc devenu impossible de composer à la main un filtre.


Pour ceux qui auraient le même problème, je donne tout de suite la solution qui a résolu le problème chez moi: c'est le filtre LAV Video Decoder qui est le responsable, comme c'est indiqué sur cette page web.  En le désinstallant tout revient à la normale. Voir ici comment faire par la méthode basique, mais on peut le faire beaucoup plus aisément avec mon logiciel Filmerit. Notons quand même que certaines pages web parlent d'un  problème identique provoqué par d'autres filtres mal installés ou non compatibles. Dans l'un d'eux le problème a été résolu en mettant à jour ffdshow. En tous cas, cela semble toujours être lié à un filtre directshow. Il est donc inutile de chercher à réinstaller graphedit, voire Windows... Si on a de la chance, une restauration système marche. Sinon, en tâtonnant il faut chercher quels sont les derniers filtres qui ont pu être installés par une application  ou une autre. Chez moi, c'est Video to Video qui avait installé les filtres LAV, y compris LavVideo.ax

Ce problème m'a conduit à effectuer diverses recherches qui m'ont permis de progresser dans la compréhension  de GraphEdit, des filtres directshow et du fonctionnement de la base de registres sous Windows 7.1 en 64 bits.


Pour commencer, j'ai découvert qu'il y avait deux versions de GraphEdit: une version 32 bits et une version 64 bits. La manière officielle de les télécharger est de télécharger tout le Windows 7.1 SDK.
En ce qui me concerne, je télécharge depuis le site de Microsoft un fichier ISO du DVD de Windows SDK 7.1, et je le grave (par exemple avec ImgBurn) sur un DVD. Ensuite pour n'installer que les appli qui m'intéressent, j'explore le DVD obtenu, pour trouver le dossier: \Setup\WinSDKWin32Tools dans lequel je double clique sur winsdkwin32tools_x86.msi
Cela crée un dossier C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin dans lequel se logent tous les outils utiles: notamment GraphEdt.exe qui est la version 32 bits du programme, et dans le sous-dossier X64, la version 64 bits qui porte le même nom.



On peut différencier les 2 en en lançant un et en ouvrant le Gestionnaire des tâches. Celui qui est 32 bits apparaît avec une mention *32, alors que l'autre reste graphedt.exe seul. Les deux peuvent fonctionner simultanément. Pour me faciliter la tache je les renomme bien sûr en graphedit32.exe et graphedit64.exe



Pour que GraphEdit puisse espionner le graphe d'une autre application, et aussi ouvrir les pages de propriétés des filtres et pins qu'il affiche, il faut aussi installer deux dll: proppage.dll et evrprop.dll. Ces deux fichiers existent aussi en versions 32 bits et 64 bits, respectivement dans le dossier Bin et son sous-dossier x64. On les installe avec regsvr32.exe qu'on trouve dans les deux dossiers C;\Windows\System32 et c:\Windows\SysWow64. C'est un peu délicat car c'est en mode ligne de commande qu'il faut travailler dans une fenêtre de commande DOS.  Pour cela je crée avec notepad un fichier install.bat qui contient le texte suivant:

C:\WINDOWS\System32\Regsvr32.exe "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin\proppage.dll"
C:\WINDOWS\System32\Regsvr32.exe "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin\evrprop.dll"
C:\WINDOWS\SYSWoW64\Regsvr32.exe "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin\x64\proppage.dll"
C:\WINDOWS\SYSWoW64\Regsvr32.exe "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin\x64\evrprop.dll"
Quand je double clique sur le fichier install.bat, j'obtiens 4 messages d'installation réussie, et alors mes deux versions de GraphEdit sont pleinement opérationnelles.



Maintenant, si on ouvre graphedit32 et graphedit64 et qu'on tape CTRL+F pour charger des filtres, et qu'on clique sur Directshow Filters pour déplier le noeud et obtenir l'affichage de tous les filtres de la catégorie directshow, on n'obtient pas du tout la même liste sur les deux versions. Je suppose ici que vous n'avez pas le problème signalé au début de ce post qui empêchait chez moi  cette manip sur graphedit32.

Par exemple, dès le début de la liste on voit que graphedit64 affiche par exemple un filtre AudioRecorder WAV Dest, que graphedit32 n'affiche pas. Au contraire graphedit32 présente un filtre ATi Ticker ou toute la série des Cyberlink que graphedit64 n'affiche pas.

On peut supposer que graphedit64 n'affiche que les filtres compatibles avec des applications 64 bits, alors que graphedit32 affiche les filtres compatibles avec des applications 32 bits. Un certain nombre de filtres sont naturellement compatibles avec les deux systèmes.

Quand je lance alors mon gestionnaire de filtres Filmerit 3.1, il m'affiche exactement les mêmes filtres que graphedit32. Cela paraît finalement normal, car toutes mes applications sont faites avec un delphi 7 qui est 32 bits. Elles sont donc toutes en 32 bits, et Filmerit du coup ne gère que les filtres 32 bits. Il faudra un jour voir comment s'occuper des filtres 64 bits. En attendant, mes programmes n'utilisent tous que des filtres 32 bits.


J'en reviens au problème de LAVideo.ax qui avait bloqué l'affichage de la liste des filtres directshow dans graphedit32. Il apparaît que c'est parce que l'un des pins disposait de plus de 100 types de formats. En fait, la version installée par Video to Video comportait exactement 218 types de formats pour le Pin 00. Ils sont numérotés de 0 à 207, puis s'ajoutent encore -39 à -48. Si on considère qu'un numéro négatif est en fait à retrancher à 256, on trouve que ces numéros négatifs vont de 208=256-48 à 217=256-39. Si on veut garder LAV Video installé, soit on le laisse comme il est, car il fonctionne correctement malgré tout sauf qu' on ne peut plus utiliser Graphedit32  pour construire des graphes. L'autre solution est sans doute d'enlever un certain nombre de types qui correspondent à des formats de vidéo rarement rencontrés. Mais cela nécessiterait un bidouillage à la main que je ne recommande pas.

Tout cela m'a quand même donné envie de voir comment les filtres sont enregistrés dans le registre de Windows 7 en 64 bits.

S'agissant des filtres directshow 32 bits, comme toutes les applications 32 bits, regedit les fait apparaître sous des clés WOW6432Node.

Un filtre directshow 32 bits apparaît ainsi dans le registre sous plusieurs emplacements:

HKEY_CLASSES_ROOT\Wow6432Node\CLSID\ est une clé où apparaît d'un part dans la sous-clé
{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\ la liste des filtres 32 bits de la catégorie directshow , d'autre part comme une sous-clé  le GUID de chacun des filtres directshow 32 bits, et son fichier serveur sous la valeur InProcServer32.

La même chose se produit de façon dupliquée dans HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\

comme dans
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\

Un filtre directshow 64 bits apparaît pour sa part de la même façon (liste des GUID dans la catégorie des filtres directshow, et Inprocserver32) sous les clés plus simples: HKEY_CLASSES_ROOT\CLSID\ et HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\.

Enfin, si je prends un filtre qui est installé aussi bien pour 32 bits que 64 bits, par exemple avi mux, alors il apparaît en principe dans les 5 positions (et toujours deux fois dans chacune).

Il est à noter que dans delphi 7 qui ne sait lire que les fichiers 32 bits, tout cela est masqué, et qu'en croyant ouvrir la clé HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\ avec une fonction openkey on ouvre en réalité la clé HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\.

Pourquoi faire simple quand on peut faire compliqué !


mardi 27 décembre 2016

Stabiliser Vegas Movie Studio HD Platinum 11.0


J'utilise depuis plusieurs années l'excellent logiciel Sony Vegas Movie Studio HD Platinum 11.0, très précisément son build  322, ce qui est la dernière mise à jour de la version 11.


Depuis quelque temps, le programme est cependant devenu très instable sur mon ordinateur sous Windows 7, et il envoie alors un message d'erreur dont on ne peut sortir qu'en quittant toute l'application. On perd tout le travail fait, et par la même occasion ses nerfs. L'erreur se produisait surtout quand on zoomait ou dézoomait la time-line. Il était en particulier devenu impossible de l'étirer pour qu'elle affiche chaque frame individuellement. Le programme se plantait systématiquement avant. Le programme n'était  presque plus utilisable, et devenait un cauchemar.


J'ai dans ce genre de cas le réflexe de voir s'il y a une mise à jour qui aurait pu traiter ces problèmes de stabilité. On constate que depuis la version 11, Sony a publié une version 12 puis une version 13. En mai 2016 en outre Sony a vendu ses produits à la société allemande Magix. Le nom de la version la plus actuelle est maintenant simplement Vegas Movie Studio Platinum 13, sans que je sache très bien si Magix a opéré des modifications autres que le changement de nom. En tous cas, s'il y a prochainement une version 14, comme c'est déjà le cas pour le logiciel professionnel Vegas Pro, elle sera due à Magix et non plus à Sony via sa filiale Sony Creative Software. Elle semble annoncée pour février 2017.

En lisant les blogs et évaluations consacrés à la version 13 de Vegas Movie Studio, je me rends compte qu'elle suscite exactement les mêmes commentaires que la version 11, notamment sur le plan de l'instabilité que rencontrent certains utilisateurs. Comme les principales nouveautés, du genre édition de films en 4K, ne me concernent pas vraiment, je deviens réticent à dépenser une soixantaine d'euros pour une mise à jour qui apportera uniquement des fonctionnalités qui ne me servent pas et qui risquent de ne pas régler mon problème.


C'est là que je découvre toute une série de sites web, notamment sur Youtube, qui donnent des solutions à ce genre de problème, par exemple ci-dessus quand on insère un texte. En général ce sont des utilisateurs qui ont rencontré un problème particulier et qui trouvent une astuce pour le contourner, par exemple en supprimant certains plugs-ins, ce qui n'est pas sans effets secondaires possibles.

Un site web a plus particulièrement retenu mon attention, car il semble traiter des crashs génériques de Sony Movie Studio 13, et non pas seulement donner une astuce pour contourner une manip particulière qui fait crasher le logiciel. On y recommande 3 choses:

1) mettre à jour les drivers de sa carte graphique
2) réinitialiser le logiciel Sony Movie Studio
3) tout réinstaller

Pour moi, le plus simple a été de procéder directement à l'étape 2, c'est-à-dire réinitialiser le logiciel, ce qui revient à le reparamétrer à toutes ses valeurs par défaut. C'est d'ailleurs une solution extrêmement rationnelle à laquelle j'aurai pu penser depuis longtemps: si pendant plusieurs années le logiciel m'a donné toute satisfaction et qu'il se plante depuis peu, alors il est probable qu'un ou plusieurs paramètres se sont déréglés au cours du temps et revenir aux paramètre initiaux ne peut que lui faire du bien.


Pour réinitialiser le logiciel, rien de plus simple: on enfonce les touches CTRL et SHIFT, et tout en les gardant enfoncées, on lance l'application (par exemple en double-cliquant sur son icone). Elle commence alors par un message initial demandant si on veut remettre tous les paramètres à leur valeur par défaut. On répond oui, après avoir éventuellement coché la case pour détruire les données dans le cache, et c'est tout.

Je l'ai fait sur ma version 11, et depuis je n'ai plus connu de plantage. Pourvu que cela dure ! En tous cas j'ai retrouvé une application très performante.


jeudi 22 décembre 2016

Lire les fichiers m2ts du camescope sur la freebox


J'ai un camescope Sony HDR-CX550 qui capture des vidéos au format AVCHD, que je stocke ensuite sur un disque dur externe rattaché à mon ordinateur. J'en fais d'ailleurs une copie sur un second HDD de sauvegarde. On ne sait jamais.

Sur ce disque dur, chaque clip vidéo apparaît sous la forme d'un fichier m2ts portant un nom du genre 20161110185456.m2ts. Il est bien connu que le nom du fichier représente la date et l'heure du tournage du clip, ici le 10 novembre 2016 à 18 h 54 mn et 56 secondes. Ce fichier .m2ts est systématiquement accompagné d'un fichier portant le même nom mais l'extension  m2ts.modd, et parfois aussi d'un petit fichier d'extension m2ts.moff.


Mon objectif est de pouvoir simplement brancher mon disque dur externe sur le freebox player via l'un de ses ports usb et  de lire ensuite les vidéos m2ts sur la télé.

Cela marche dans une certaine mesure, mais un premier problème vient de ce que la freebox ne permet pas d’enchaîner les clips, et il faut donc les charger un par un pour les lire individuellement avec, à chaque chargement, un temps d'attente qui peut être suffisamment long pour devenir exaspérant. Or quand je suis en vacances j'ai l'habitude de multiplier les clips de courte durée et j'en ai donc beaucoup. Par exemple lors de notre voyage récent au Chili, j'ai capturé 655 clips vidéos !

En outre, la freebox ne sait pas naviguer dans un fichier m2ts. Lorsque on essaie de le faire (avec les touches de la télécommande) pour avancer plus rapidement ou reculer, alors tout se plante assez vite. C'est un bug qui a été signalé mais que free n'a apparemment jamais réellement corrigé. C'est donc rédhibitoire quand on veut chercher un passage intéressant sans infliger à ses amis la vision de plusieurs heures de film vidéo.


La bonne solution est de convertir tous ces fichiers m2ts au format mp4, en les regroupant au passage dans un seul fichier. L'idéal est de trouver une application qui fasse cela rapidement, donc sans recompression. L'opération doit garder les frames vidéo (et si possible les samples audio) tels qu'ils ont été capturés et transférés sur le disque dur, (ils sont en H264 et AC3) mais les réarranger dans le conteneur mp4 au lieu du conteneur m2ts.

Il existe de nombreuses applications qui font de la conversion de m2ts en mp4, mais en général elles le font pour pouvoir utiliser le fichier résultant sur un iphone ou un ipad. Elles ne conservent alors pas le format d'image 1920 x 1080 de mes fichiers, et souvent baissent le débit du flux vidéo. Au total les fichiers sont lisibles sur la freebox, mais en qualité moindre que l'original, et la durée de conversion est très longue, au moins 2 à 4 fois la durée du film. La gestion de l'entrelacement n'est pas non plus satisfaisante pour une lecture sur TV.


Je me suis alors tourné vers Wondershare Video Converter Ultimate, qui semble la rolls royce de la conversion video. Effectivement les premiers tests que j'ai faits avec la version d'essai de cette application sont stupéfiants de vitesse et de qualité de conversion. Mais la version de test est bridée: elle n'effectue la conversion que sur le premier tiers du film. Il faut payer environ 45€ pour avoir la version non bridée (parfois ils font des promotions cependant).


Il existe bien une version gratuite Wondershare Video Converter Free, beaucoup plus difficile à trouver sur le net que la précédente, même sur le site de Wondershare. Attention, il ne faut pas la confondre avec la version d'essai de Wondershare Video Converter Ultimate: avant de télécharger une version, assurez-vous qu'elle ne contient pas le mot Ultimate, car de manière un peu trompeuse certains sites proposent de télécharger la version gratuite de WVC, et vous transfèrent en fait la version d'essai de WVC Ultimate.

Cette application Wondershare Video Converter Free, petite sœur de l'Ultimate, comprend moins de fonctionnalités que sa grande sœur, mais ces fonctionnalités ne sont pas bridées et permettent donc de traiter les vidéos entièrement. Si cette application permet des conversions relativement rapides de m2ts en mp4, malheureusement je n'y ai pas trouvé la fonction qui permet une conversion sans perte (lossless) et tous les réglages que j'ai essayés réduisent la qualité d'image, contrairement à  ce que permet la version Ultimate.

J'ai donc failli payer les 45 € demandés, lorsque je suis tombé sur un petit programme  simplement appelé Video to Video. A ma grande satisfaction, il permet de faire exactement ce que je souhaitais. Je vais ici expliquer comment procéder.

D'abord télécharger et installer Video to Video, ce qui ne pose qu'un petit problème: au cours de l'installation, il vous propose d'installer les filtres LAV. Je ne vois aucun inconvénient à installer ces bons filtres (sauf si vous les aviez déjà dans une version plus récente), mais si vous voulez juste faire de la conversion sans recompression ils ne vous seront pas utiles. On peut donc aussi sans dommage décocher la case correspondante après avoir choisi une installation personnalisée (Custom Installation).


Ensuite lancer Video to Video pour ouvrir la page d'accueil. Si nécessaire, dans le menu Language, choisir votre langue préférée, a priori le Français.


Dans le menu Outils, cliquer sur Joindre fichiers vidéo. On peut alors ajouter tous les fichiers m2ts qu'on veut concaténer, en cliquant sur le bouton Ajouter. S'ils ont toujours leur nom d'origine formé sur la date et l'heure de tournage, ils se placeront dans l'ordre chronologique du tournage. Sinon on peut aussi déplacer certains fichiers vers le haut ou le bas avec les boutons flèches rouges.


Quand c'est prêt, on clique sur OK et on obtient alors, après une analyse des fichiers ajoutés, le panneau de choix des paramètres de compression.


Le paramètre de compression qui nous intéresse est tout en bas de la fenêtre Profils Vidéos. C'est Direct Stream Copy, c'est-à-dire une copie du flux vidéo sans recompression. C'est une fonction assez basique, mais qui manque dans beaucoup de programmes qui font de la conversion de m2ts vers mp4.

Il faut ensuite aussi choisir les paramètres du conteneur de sortie, dans la partie droite de la fenêtre. On choisira simplement MP4, *.mp4, les deux cases Vidéo et Audio restant cochées  et la fréquence pouvant être laissée en Auto.


Vous validez tout cela par OK. Vérifiez ensuite le dossier de destination (dossier de sortie) qu'on peut modifier au bas de la fenêtre. Attention, on ne peut pas choisir le nom du fichier produit, qui sera celui du premier clip m2ts ajouté, mais avec l'extension mp4, par exemple 20161110185456.mp4. C'est à mon avis le principal défaut de ce programme, car on aimerait donner un nom plus global à cette vidéo qui regroupe éventuellement des dizaines de clips.


Et finalement lancez la conversion par le gros bouton Convertir dans la barre de menus. Au bout d'un temps relativement court, souvent bien plus court que la lecture de la vidéo, vous récupérerez le fichier mp4 dans le dossier indiqué, et vous pourrez le renommer manuellement.

Voilà, il sera lisible dans la freebox, en qualité égale à vos fichiers initiaux, et en outre il sera aisé d'y naviguer avec les boutons de votre télécommande freebox.