Metronome フィルターのサンプル

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

説明

このサンプル フィルターは、参照クロックを実装する方法を示しています。 フィルターでは、既定のマイク入力を使用して、オーディオスパイク (クリック、ハンド クラップ、咳など) をリッスンします。これは、クロック レートを決定するために使用されます。

使用方法

サンプル プロジェクトをビルドし、フィルター DLL (Metronom.ax) を Windows システム ディレクトリにコピーします。 Metronom.reg ファイルを実行して DLL を登録します。

フィルターを使用するには:

  1. GraphEdit で、ビデオ ストリームをレンダリングするフィルター グラフを作成します。
  2. レンダリングされたオーディオ ストリームをすべて削除します。
  3. グラフに Metronome フィルターを追加します。 DirectShow フィルター カテゴリに表示されます。
  4. グラフを実行します。 ビデオは通常の速度で再生を開始します。
  5. 手をたたくか、メトロノームを使用して新しい速度を設定します。

プログラミング に関するメモ

このフィルターはビデオでのみ機能します。 オーディオ レンダラーは、大幅に異なるクロック レートに同期できません。

1 分あたり 92 回 (約 652 ミリ秒ごとに 1 回) 拍手すると、ビデオは通常の速度で再生されます。 この既定値は、Metronom.cpp で定数 BPM の値を変更することで変更できます。

一定期間クラッピングを停止してから、もう一度クラッピングを開始する場合は、ほぼ同じ速度でもう一度開始する必要があります。または、フィルターによって無視されます。 また、ビデオ再生速度は CPU 速度によって制限されます。 時間の制限を超えた場合、フィルターはレートの変化への応答を停止します。 この場合は、グラフを停止して再起動します。

独自のクロックを実装する場合、最も重要なルールは、参照クロックを後方に移動してはならないということです。 つまり、前の時刻値より小さい時間値を報告しないでください。

サンプルのダウンロード

DirectShow SDK サンプルをダウンロードするには、最新バージョンの Windows SDK をインストールします。

このサンプルは、[ SDK Root]\Samples\Multimedia\DirectShow\Filters\Metronome のパスの下にインストールされます。

CBaseReferenceClock クラス

DirectShow のサンプル