2010-03-17 5 views
0

J'ai une application C#, et je cherche à utiliser le contrôle COM Windows Media Player pour jouer de l'animation et de l'audio. Jusqu'à présent, le seul moyen de contrôler par programmation ce que joue le contrôle est de définir sa propriété URL pour qu'elle pointe vers un fichier (je suppose qu'il y a un moyen de passer une playlist).Le contrôle COM Windows Media Player peut-il lire les fichiers AVI de la mémoire (au lieu d'un fichier)?

Est-il possible le WMP peut rendre un fichier AVI qui est entièrement en mémoire, comme un MemoryStream ou quelque chose? Si c'est le cas, est-ce que WMP peut passer d'un AVI à l'autre de façon transparente (c'est-à-dire sans aucun problème dans l'audio ou la vidéo lors de la transition de l'un à l'autre)?

Si WMP ne joue que des fichiers, est-il possible de cue une liste des fichiers à l'avance de jeu commencer? Si oui, peut-on faire passer WMP d'un fichier à l'autre sans une brève interruption?

Toute connaissance ou des liens à la connaissance seraient appréciés.

Modifier: est-ce que des contrôles tiers peuvent effectuer cette opération? Pour clarifier, ce dont j'ai vraiment besoin est un contrôle qui va lire une séquence de fichiers AVI (soit en mémoire ou à partir du disque) et jouer à la fois la vidéo et l'audio de façon transparente en passant d'un fichier à l'autre pépins ou pauses entre les fichiers). WMP semble couper le moteur audio, puis se rallumer entre chaque fichier (ce qui se traduit par un petit bruit "pop"), donc je ne suis pas vraiment sûr que WMP puisse faire ce dont j'ai besoin.

Edit 2: never mind. J'ai juste essayé de diviser un fichier AVI puis de jouer les segments consécutivement dans une liste de lecture, et c'est bien pire qu'un petit bruit "pop". Il fait une pause pendant près d'une seconde. Je ne pense pas que WMP est construit pour faire ce que j'ai besoin de faire.

Répondre

3

J'espère vraiment ce est pas la réponse:

DirectShow et Windows Media Player permettent une URL au lieu d'un nom de fichier à lire une vidéo. Vous pouvez créer un fil dans votre application qui écoute sur une prise dynamique pour les requêtes HTTP sur l'adaptateur loopback (127.0.0.1) et ne prend les demandes de votre application (regardez dans l'en-tête ou de mettre quelque chose dans l'url qui identifie la demande ). Ensuite, vous pouvez lire la ressource dans la mémoire et l'alimenter en arrière par la demande Web.

-De Bill Reiss MVP

Trouvé à:

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5ffb0aa2-d2b3-44d0-985c-f1d3034711b5

Est-ce à distance possible?

+0

1 réponse très créatif! –

+0

J'espère que quelqu'un me dit qu'il n'y a pas moyen de travailler, alors je ne perds pas de temps à l'essayer. Ce serait un piratage heckuva si c'était le cas. :) – MusiGenesis