手順 1: Windows Framework を作成する
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
[この API はサポートされていないため、今後変更または使用できない可能性があります。]
まず、WinMain やウィンドウ プロシージャなど、Windows アプリケーションの基本的なフレームワークを作成します。 WinMain 関数はここには表示されません。メッセージ ループの前に CoInitialize を呼び出して COM ライブラリを初期化し、メッセージ ループが終了した後に CoUninitialize を呼び出します。 次の最小ウィンドウ プロシージャから開始します。
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
static BITMAPINFOHEADER *pbmi = NULL;
static BYTE *pBuffer = NULL;
switch (msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
if (pbmi) delete [] pbmi;
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wparam, lparam);
}
return 0;
}
Media Detector からポスター フレームを取得すると、 BITMAPINFOHEADER 構造体とそれに続くイメージ ビットを含むバッファーが返されます。 したがって、ウィンドウ プロシージャで 2 つの静的変数を定義します。 pbmi は BITMAPINFOHEADER 構造体へのポインターを保持し、 pBuffer はビットマップへのポインターを保持します。 アプリケーションは を使用して pbmi にバッファーを new
割り当てます。そのため、ウィンドウが破棄される前にバッファーを削除する必要があります。
pBuffer ポインターは pbmi からのオフセットとして計算されるため、削除する必要はありません。
次へ: 手順 2: メニュー コマンドを追加してポスター フレームを取得する
関連トピック