Tag d'archives : CSharp

J’ai téléchargé et installé ffdshow. J’ai étudié un peu les fonctionnalités offertes par le Video Compression Manager, et en effectuant des recherches le concernant, je suis tombée sur le blog suivant, qui m’a permis de mieux comprendre comment encoder et décoder des vidéos en utilisant DirectShow.

http://paulglagla.blogspot.com/2007/03/codecs-ou-filtres.html

Le Video Compression Manager est donc simplement un filtre DirectShow qui permet d’utiliser des codecs Video For Windows. C’est aux filtres DirectShow qu’il faut faire appel si on veut compresser. C’est alors que je me suis heurtée à un second problème : la librairie DirectShow n’est en fait utilisable que sous C++, et les libraires que j’avais utilisées jusqu’à présent étaient en fait un portage de ces libraires pour C#, réalisées par un amateur. Cependant, il existe une version plus officielle et sous license LGPL d’un tel portage, et je l’avais confondue avec la version que j’utilisais.

Cette librairie, appelée DirectShow.NET, est téléchargeable et documentée à l’adresse suivante :

http://directshownet.sourceforge.net/about.html

Cette librairie reprend, entre autres, toutes les fonctionnalités des filtres de DirectShow, mais pour C#. J’ai donc commencé à reprendre mon travail avec cette librairie.

Comme j’ai rencontré quelques problèmes et que cette solution semble bien plus compliquée à mettre en place en C# qu’en C++, (à cause de la compatibilité de la librairie) je me tourne finalement vers cette dernière solution, en ré-implémentant le projet en Visual C++.

Ce matin, j’ai achevé assez rapidement de coder le diffuseur de flux vidéo. Mais la compilation m’a posé quelques soucis, car il me manquait des références.

Après quelques recherches sur Internet pour saisir d’où venait le problème, j’ai entrepris de télécharger le SDK de DirectX, trouvable à l’adresse suivante :

http://msdn.microsoft.com/en-us/directx/aa937788.aspx

Mais celui-ci faisant 483 Mo, le téléchargement fut assez long (environ une demi-heure). Malheureusement, malgré cette installation, le code refusait toujours de compiler. J’ai ensuite réalisé que j’avais également besoin des DLL fournies avec le projet sur lequel je me suis basée.

Après quelques corrections du code (en effet, la version originale était en Visual Basic, il fallait donc que je l’adapte à C#), j’ai réussi à compiler et à exécuter le projet qui fonctionnait parfaitement bien.

Le problème est maintenant de pouvoir utiliser un codec vidéo de son choix. En effet, la solution que j’ai implémentée utilise un codec par défaut de Windows. Il est assez difficile de trouver de la documentation concernant DirectShow, ce qui ne me facilite pas la tâche, mais il semblerait que cela soit faisable en utilisant le Video Compression Manager.

Qui-plus-est, il existe une autre manière d’afficher le flux vidéo provenant d’une webcam : en utilisant une dll appelée WIA Automation Layer, comme indiqué dans l’article ci-dessous :

http://www.c2i.fr/Article/Detail/068fff65-d7b7-4424-8407-5bf14d645beb

Si je n’arrive pas à progresser d’avantage en utilisant DirectShow, je tenterai de me tourner vers cette solution.

Ma première tâche étant de réaliser une application client/serveur en C# utilisant le streaming, j’ai effectué quelques recherches sur Internet afin de voir s’il n’existait pas des codes sources correspondant à cela, ou, du moins, qui s’en approcheraient.

J’ai effectivement trouvé un code permettant de diffuser le flux vidéo d’une webcam en local, que vous pouvez trouver à l’adresse suivante :

http://www.vbfrance.com/codes/STREAMING-AUDIO-VIDEO_19533.aspx

Actuellement, j’essaie de reprendre ce code en C# (le code source d’origine étant en Visual Basic).

Parallèlement à cela, j’ai lu quelques articles sur le streaming vidéo afin de le comprendre plus en détails :

http://fr.wikipedia.org/wiki/Streaming