我正在尝试使用C#中的MCI播放压缩的AVI文件。到目前为止,我可以通过打开文件来播放它。
我打开文件的方式是:
String opencommand = "open \"" + file + "\" type mpegvideo alias someMovie shareable";
int error;
error = Avi.mciSendString(opencommand, null, 0, IntPtr.Zero);
其中file
是文件路径。视频以这种方式播放。
如果我能够从已经使用avifil32.dll中的AVIFileOpen()
和AVIFileGetStream()
加载的流中播放它,那将会更好。从MSDN文档中,我似乎应该能够做到这一点。他们这样说here:
“MCI可以使用a打开AVI文件 文件接口指针或 流接口指针。打开一个 使用任一类型的接口文件 指针,指定一个at符号(@) 接着是接口指针 文件或设备名称的位置
lpszDevice
参数。更多 有关文件和流的信息 接口,请参阅“AVIFile函数和 宏。“”
但不幸的是,他们没有详细说明,我不知道我应该做什么。 “流接口指针”实际意味着什么,我从哪里得到一个?因为MSDN肯定不会试图解释他们发明的术语。
答案 0 :(得分:0)
所以部分回答我自己的问题:接口指针的假设用法似乎是这样的:
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,这是一个已知的,未解决的当然,bug所以除了将文件路径传递给MCI之外,没有什么可做的。