1

我正在尝试在 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 文档看来我应该能够做到这一点。他们在这里这么说:

“MCI 可以使用文件接口指针或流接口指针打开 AVI 文件。要使用任一类型的接口指针打开文件,请指定 at 符号 (@),后跟接口指针代替文件或参数的设备名称lpszDevice。有关文件和流接口的更多信息,请参阅“AVIFile函数和宏。”

但不幸的是,他们没有详细说明,我不知道我应该做什么。“流接口指针”实际上是什么意思,我从哪里得到一个?因为 MSDN 肯定不会试图解释他们发明的术语。

4

1 回答 1

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 的说法,这是一个已知的、未解决的错误,所以除了将文件路径传递给 MCI 之外,这里没有什么可做的。

于 2009-03-03T15:18:34.110 回答