- - PR -
VFW(Video For Windows)のEditStreamSetInfo関数について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-23 14:36
現在、VFW(Video For Windows)を用いて複数のBMPファイルからAVIファイルを生成しています。
AVIファイル作成時に(AVIコンテナ作成時に)、 AVISTREAMINFO構造体を用意して、 動画のスクリーンサイズや、フレームレートの設定をあらかじめ行っています。 動画のフレームレートを後で変更したい場合、EditStreamSetInfo関数を使えばできるのかな、と思い、AVIコンテナクローズ直前にEditStreamSetInfo関数をコールしてみましたが、エラーが返りました。(値は-2147467262。成功していれば0が返る) 【EditStreamSetInfo関数】 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpmltimd/html/_win32_editstreamsetinfo.asp 【エラーが返る例】 PAVIFILE pavi; PAVISTREAM pstm; //=== AVIコンテナオープン(略) === //=== AVIコンテナにRAWデータを書き出し(略) === //=== AVIファイルクローズ直前 === // やりたいこと:フレームレートの変更を行いたい AVISTREAMINFO newsi; memset(&newsi, 0, sizeof(newsi)); AVIStreamInfo(pstm, &newsi, lSize); newsi.dwRate = (int)(変更後のフレームレート値); newsi.fccType = streamtypeVIDEO; newsi.fccHandler = mmioFOURCC('d','i','v','x'); newsi.dwFlags = 0; newsi.dwCaps = 0; newsi.wPriority = 0; newsi.wLanguage = 0; newsi.dwScale = 1; newsi.dwStart = 0; newsi.dwLength = (ストリームの長さ); newsi.dwInitialFrames = 0; newsi.dwSuggestedBufferSize = 0; newsi.dwQuality = (DWORD)-1; newsi.dwSampleSize = 0; newsi.rcFrame.top = 0; newsi.rcFrame.left = 0; newsi.rcFrame.bottom = (動画サイズ 高さ); newsi.rcFrame.right = (動画サイズ 幅); newsi.dwEditCount = 0; newsi.dwFormatChangeCount = 0; long lSize = sizeof(AVISTREAMINFO); int iResult = EditStreamSetInfo(pstm, &newsi, lSize); if(iResult!=0) { // エラー // -2147467262が返っている ; } //=== AVIファイルクローズ === AVIStreamRelease( pstm ); AVIFileRelease( pavi ); AVIFileExit(); EditStreamSetInfo関数の使い方が誤っているのでしょうか。 わかる方どうかご教授をお願いいたします。 なお、環境はVisual Studio .NET 2003(Managed C++)で、 作成しているAVIファイルはDivXコーデックにて圧縮をかけています。 |
1