J'utilise Windows Media Format SDK pour capturer le bureau en temps réel et l'enregistrer dans un fichier WMV (en fait c'est une simplification excessive de mon projet, mais c'est la partie pertinente). Pour l'encodage, j'utilise le codec Windows Media Video 9 Screen car il est très efficace pour les captures d'écran et parce qu'il est disponible pour pratiquement tout le monde sans avoir besoin d'installer quoi que ce soit, car le codec est inclus avec Windows Media Player 9 (inclus dans Windows XP SP1) .Capture du bureau avec Windows Media Format (WMF)
Je réalise des captures d'écran BITMAP en utilisant les fonctions GDI et j'aligne ces BITMAP au codeur. Comme vous pouvez le deviner, prendre des captures d'écran avec GDI est lent, et je n'obtiens pas le curseur de l'écran, que je dois ajouter manuellement aux BITMAP. Les BITMAP que je reçois initialement sont des DDB, et j'ai besoin de les convertir en DIB pour que l'encodeur comprenne (entrée RVB), et cela prend plus de temps. Le déclenchement d'un profileur indique qu'environ 50% du temps est passé dans WMVCORE.DLL, le codeur. C'est à prévoir, bien sûr, car l'encodage est intensif en CPU. En réalité, il existe un élément appelé SDK (Windows Media Encoder) qui permet de réaliser une capture d'écran en utilisant le codec souhaité de manière plus simple et plus conviviale.
Le WME est basé sur WMF. C'est une librairie de leviers supérieure et aussi des bindings .NET. Je ne peux pas l'utiliser dans mon projet car cela entraîne des dépendances indésirables que je dois éviter.
Je pose des questions sur la méthode utilisée par WME pour transmettre des données d'échantillons au codeur WMV. L'encodage a lieu avec WME exactement comme il se passe avec mon application qui utilise WMF. WME est plus efficace que mon application car il dispose d'un moyen beaucoup plus efficace de fournir des données vidéo à l'encodeur. Il ne repose pas sur des fonctions GDI lentes et des conversions DDB-> DIB.
Comment cela se fait-il?
Je pense que vous pensez à Windows Metafiles, ce qui n'est pas la même chose que Windows Media Format (un encodeur audio/vidéo). – jeffm