ビットマップイメージからAVIファイルを作成する
開発途中のゲームのプレイ画面をAVIの動画ファイルとして保存する方法についてのメモ書きです。
1.AVIファイルの作成
AVIFileOpen()関数にてAVIファイルを作成します。
PAVIFILE pAviFile = NULL; AVIFileOpen(&pAviFile, TEXT("test.avi"), OF_CREATE | OF_WRITE, NULL);
第1引数に作成したAVIファイルの情報を格納する構造体ポインタ変数へのポインタ、
第2引数ひは作成するAVIファイル名、第3引数には作成オプションを指定します。
作成する場合はOF_CREATEを指定し、今回はファイルに書き込む必要があるのでOF_WRITEを指定しています。
第4引数はとりあえずNULLで問題ありません。
2.AVIストリームの作成
AVIFileCreateStream()関数にてAVIストリームを作成する必要があります。
この関数を呼び出す前に、まずAVISTREAMINFO構造体に必要な情報をセットする必要があります。
AVISTREAMINFO AviStreamInfo; AviStreamInfo.fccType = streamtypeVIDEO; // 動画 AviStreamInfo.fccHandler = comptypeDIB; // デバイス非依存ビットマップ AviStreamInfo.dwFlags = 0; AviStreamInfo.dwCaps = 0; AviStreamInfo.wPriority = 0; AviStreamInfo.wLanguage = 0; AviStreamInfo.dwScale = 1; AviStreamInfo.dwRate = dwRate; // フレームレート AviStreamInfo.dwStart = 0; AviStreamInfo.dwLength = dwFrameNum; // フレーム数 AviStreamInfo.dwInitialFrames = 0; AviStreamInfo.dwSuggestedBufferSize = 0; AviStreamInfo.dwQuality = static_cast<dword>(-1); // クオリティはデフォルトで AviStreamInfo.dwSampleSize = 0; AviStreamInfo.rcFrame.left = 0; AviStreamInfo.rcFrame.top = 0; AviStreamInfo.rcFrame.right = dwWidth; // 画面の幅 AviStreamInfo.rcFrame.bottom = dwHeight; // 画面の高さ AviStreamInfo.dwEditCount = 0; AviStreamInfo.dwFormatChangeCount = 0; AviStreamInfo.szName[0] = TEXT('