我试图使用C#中的MCI播放一个压缩的AVI文件。到目前为止,我能够通过打开文件来播放它。
我打开文件的方式如下:
String opencommand = "open \"" + file + "\" type mpegvideo alias someMovie shareable";
int error;
error = Avi.mciSendString(opencommand, null, 0, IntPtr.Zero);其中file是文件路径。这样录像播放得很好。
如果我能够从已经使用AVIFileOpen()和avifil32.dll的AVIFileGetStream()加载的流中播放它,在我的情况下会好得多。从MSDN文档来看,我应该能够做到这一点。他们是这么说的这里
MCI可以使用文件接口指针或流接口指针打开AVI文件。若要使用任何类型的接口指针打开文件,请为
lpszDevice参数指定一个at符号(@),后面跟着接口指针,以代替文件或设备名。有关文件和流接口的详细信息,请参阅"AVIFile函数和宏“。
但不幸的是,它们没有详细说明,我也不知道该怎么做。“流接口指针”实际上意味着什么?我从哪里得到一个指针?因为MSDN肯定没有试图解释他们发明的术语。
发布于 2009-03-03 15:18:34
因此,部分地回答我自己的问题:接口指针的假定用法似乎是这样的:
Avi.AVIFileOpen(ref aviFile, fileName, Avi.OF_SHARE_DENY_WRITE, 0);
Avi.mciSensString("open @" + aviFile + " type mpegvideo alias someMovie", null, 0, IntPtr.Zero);其中"aviFile“是指向由AviFileOpen()填充的文件接口的指针。我还尝试用AviFileGetStream()获取流接口指针,并将其传递给MCI,但是指针都没有工作,MCI抱怨它找不到文件。
根据MS,这是一个已知的、未解决的错误,所以这里除了将文件路径传递给MCI之外,没有什么可做的。
https://stackoverflow.com/questions/601781
复制相似问题