DVApp サンプル
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
説明
デジタル ビデオ (DV) キャプチャ アプリケーション。
このサンプルでは、DV ビデオカメラを制御するためのさまざまな種類のフィルター グラフを作成する方法を示します。 また、DV ビデオカメラを使用してキャプチャ、プレビュー、送信、およびデバイス制御を実行する方法も示します。
使用方法
DVApp アプリケーションでは、次のモードがサポートされています。
- プレビュー: ビデオカメラからビデオ ウィンドウに DV をレンダリングします。
- タイプ1ファイルへのDV:ビデオカメラからタイプ1 DVファイルにDVデータをキャプチャします。
- タイプ1ファイルをDVに:タイプ1 DVファイルからビデオカメラにデータを送信します。
- タイプ2ファイルへのDV:ビデオカメラからタイプ2 DVファイルにDVデータをキャプチャします。
- タイプ2ファイルをDVに:タイプ2 DVファイルからビデオカメラにデータを送信します。
キャプチャ モードと送信モードでもプレビューが実行されます。 これらの各モードには、 プレビューを無効にする [プレビューなし ] オプションもあります。 プレビューなしでキャプチャする方が効率的で、削除されたフレームの数を減らすことができます。
アプリケーションはプレビュー モードで起動します。 別のモードを選択するには、[グラフ モード] メニューから モードを 選択します。 各モードについて、DVApp は、そのモードの機能をサポートするフィルター グラフを構築します。 グラフを GraphEdit (.grf) ファイルとして保存するには、[ファイル] メニューの [ファイルにグラフを保存] を選択します。 GraphEdit でファイルを開く前に、DVApp を終了します。
ファイルにキャプチャするには:
- [ ファイル ] メニューの [ 出力ファイルの設定 ] を選択し、ファイル名を入力します。
- [グラフ モード] メニューから、DV からファイル モード (「1」または「2」と入力し、プレビューありまたはプレビューなし) を選択します。
- [ レコード] をクリックします。
- ビデオカメラが VTR モードの場合は、[ 再生] をクリックします。
- キャプチャを停止するには、[ 停止] をクリックします。
ファイルからビデオカメラに送信するには:
- [ ファイル ] メニューの [ 入力ファイルの設定 ] をクリックし、DV ファイルを選択します。 ファイルは、選択したモード (タイプ 1 またはタイプ 2) と一致している必要があります。
- [グラフ モード] メニューから、[ファイルから DV] モード (「1」または「2」と入力し、プレビューありまたはプレビューなし) を選択します。
- [再生] をクリックします。
- データをテープに記録するには、[ 記録] をクリックします。
- 送信を停止するには、[ 停止] をクリックします。
ビデオカメラがVTRモードの場合、ユーザーはアプリケーションのVCRスタイルのボタンを介してトランスポート機構を制御することができます。 テープをシークするには、ターゲット タイムコードを入力し、[シーク] ボタンをクリックします。
アプリケーションがキャプチャするデータの量を制限するには、[ファイル] メニューの [キャプチャ サイズ] を選択します。
テープ形式 (NTSC または PAL) をチェックするには、[オプション] メニューから [テープの確認] を選択します。
プレビュー ウィンドウのサイズを変更するには、[オプション] メニューから [デコード サイズの変更] を選択します。
プログラミング に関するメモ
このアプリケーションのメインの目的は、さまざまな DV キャプチャを構築し、グラフを送信する方法を示します。
デバイスの到着と削除
アプリケーションは、2 つの異なる手法を使用して、デバイスの到着と削除を処理します。 デバイス到着の場合、アプリケーションのメッセージ ループはWM_DEVICECHANGEメッセージに応答します。 デバイスを削除する場合、アプリケーションはフィルター グラフ マネージャーから EC_DEVICE_LOST イベントに応答します。 どちらの方法でも機能しますが、EC_DEVICE_LOST イベントはフィルター グラフにデバイスが存在するかどうかによって異なります。
アプリケーションは、一度に 1 つのデバイスのみを処理します。 現在のデバイスが削除された場合、アプリケーションはシステム上で別の DV デバイスを検索します。
一部の DV ビデオカメラでは、カメラ モードと VTR モードを切り替えるときにデバイスをシャットダウンする必要があります。これにより、デバイスが失われたメッセージがトリガーされます。 アプリケーションは、適切なメニュー コマンドを有効または無効にすることで応答します。 ただし、ユーザーがモード間を迅速に切り替えると、ビデオカメラでデバイスが失われたメッセージが生成されない可能性があります。 [オプション] メニューから [更新モード] を選択すると、メニューを強制的に更新できます。 一部のDVビデオカメラは、シャットダウンせずにモードを切り替えることができますが、VTRモードに切り替えたときにのみデバイスが失われたメッセージを送信します。
デバイスの制御
[再生と記録] ボタンの機能は、現在のモードによって異なります。
- プレビュー: フィルター グラフは自動的に実行されます。 [再生] ボタンをクリックすると、トランスポートが開始されます。
- ファイルへのキャプチャ: [ レコード ] ボタンによってグラフが実行され、[ 再生 ] ボタンによってトランスポートが開始されます。
- デバイスへの送信: [再生 ] ボタンによってグラフが実行され、[ 記録 ] ボタンによってトランスポートが開始されます。
サンプル アプリケーションでは、フレーム精度のキャプチャは実行されません。 さまざまな時点で、アプリケーションは Sleep 関数を呼び出して、デバイスが応答するのを待機します。 新しいDVビデオカメラは、デバイスの状態が変化したときに通知を送信します。 古いデバイスでは通知がサポートされていない可能性があります。サンプルの目的では、 Sleep を呼び出す方が簡単なソリューションです。
サンプルのダウンロード
DirectShow SDK サンプルをダウンロードするには、最新バージョンの Windows SDK をインストールします。
このサンプルは、[ SDK Root]\Samples\Multimedia\DirectShow\Capture\DVApp のパスの下にインストールされます。
関連トピック