2009-03-02 7 views
1

J'essaye de lire un fichier AVI compressé en utilisant MCI en C#. Jusqu'à présent, j'étais capable de jouer en ouvrant le fichier.Utilisation de MCI pour lire un flux avi depuis la mémoire

La façon dont je le fichier ouvert est la suivante:

String opencommand = "open \"" + file + "\" type mpegvideo alias someMovie shareable";  
int error;  
error = Avi.mciSendString(opencommand, null, 0, IntPtr.Zero); 

file est le chemin du fichier. La vidéo joue bien comme ça.

Ce serait beaucoup mieux dans mon cas si j'étais capable de le lire à partir d'un flux qui est déjà chargé en utilisant AVIFileOpen() et AVIFileGetStream() de avifil32.dll. De la documentation de MSDN il semble que je devrais pouvoir faire ceci. Ils disent here.

« MCI peut ouvrir des fichiers AVI en utilisant un pointeur interface de fichier ou un pointeur-interface de flux Pour ouvrir un fichier en utilisant soit le type de pointeur Interface , spécifiez un à signe (@) suivi par le pointeur d'interface place du nom du fichier ou périphérique pour le paramètre lpszDevice. pour de plus amples informations sur le fichier et flux interfaces, voir « Fonctions aVIFile et macros. » »

Mais malheureusement, ils ne vont pas dans les détails et je n'ai aucune idée de ce que je suis censé faire. Que signifie réellement "stream-interface pointeur" et d'où puis-je en trouver un? Parce que MSDN n'essaie sûrement pas d'expliquer les termes qu'ils inventent.

Répondre

0

Donc, pour répondre, en partie, à ma propre question: l'utilisation supposée pour les choses de pointeur d'interface semble être comme ceci:

Avi.AVIFileOpen(ref aviFile, fileName, Avi.OF_SHARE_DENY_WRITE, 0); 
Avi.mciSensString("open @" + aviFile + " type mpegvideo alias someMovie", null, 0, IntPtr.Zero); 

où « AVIFile » est un pointeur vers l'interface de fichier rempli par AviFileOpen(). J'ai également essayé d'obtenir le pointeur d'interface de flux avec AviFileGetStream() et le passer à MCI mais aucun pointeur ne fonctionne et MCI se plaint de ne pas trouver le fichier.

Selon MS, il s'agit bien entendu d'un problème non résolu, bug, donc il n'y a rien à faire ici si ce n'est de passer le chemin du fichier à MCI.

Questions connexes