2009-03-02 22 views
1

MCIを使用して圧縮されたAVIファイルをC#で再生しようとしています。これまではファイルを開いて再生することができました。MCIを使用してメモリからaviストリームを再生する

私は、ファイルを開く方法はこれです:fileは、ファイルパスをある

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

。動画はこのようにうまく再生されます。

avifil32.dllのAVIFileOpen()AVIFileGetStream()を使用して既にロードされているストリームから再生できたら、私の場合ははるかに良いでしょう。 MSDNのドキュメントから、私はこれを行うことができるはずです。彼らはとてもhereを言う:

「MCIは、 ファイル・インタフェースポインタまたは ストリームインターフェイスポインタを使用してインターフェイス ポインタの型のいずれかを使用して ファイルを開くにはでAVIファイルを開く時に指定することができます。 lpszDeviceパラメータのファイルまたはデバイス名の 場所にインターフェイスポインタが続く記号(@) 。ファイルやストリーム インタフェースを詳細 については、「AVIFILE関数と マクロ」を参照してください。」

しかし、残念ながら彼らは詳細には進まず、私は何をすべきか分かりません。 "stream-interface pointer"は実際には何を意味し、どこから取得するのですか? MSDNは確かに彼らが発明した用語を説明しようとしないので。

答えて

0

はそう答えるために、部分的に、自分の質問に:インターフェイスポインターのもののためになっ使い方はとても似のようだ:「AVIFILEは」AviFileOpenで満たされたファイルインタフェースへのポインタをある

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

()。私はまた、AviFileGetStream()でストリームインターフェイスのポインタを取得しようとMCIに渡したが、どちらのポインタも動作せず、MCIはファイルを見つけることができないと不平を言う。

これは、既知の未解決のコースです(bug)。したがって、ファイルパスをMCIに渡す以外は何もしません。

関連する問題