挿入を強制Key-Frameするには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

Windows Media Video 9 コーデックは、強制キー フレーム挿入をサポートしています。 サンプルをライターに渡すときに、 キー フレームとしてエンコードする必要があることを指定できます。

サンプルのキー フレーム挿入を強制するには、次の手順を実行します。

  1. サンプルを保持するバッファーを割り当て、IWMWriter::AllocateSample を呼び出してバッファーを含む INSSBuffer インターフェイスへのポインターを取得します。
  2. INSSBuffer::GetBufferAndLength を呼び出して、手順 1 で作成したバッファーの場所とサイズを取得します。
  3. サンプル データをバッファーの場所にコピーし、渡されたサンプルが割り当てられたバッファーに収まるようにします。 サンプルのソースに応じて、さまざまな関数を使用してデータをコピーできます。 たとえば、AVI ファイルからストリームをコピーする場合は、AVI 関数 AVIStreamRead を使用できます。
  4. INSSBuffer::SetLength を呼び出して、サンプルの実際のサイズを反映するようにバッファーで使用されるデータの量を更新します。
  5. INSSBuffer::QueryInterface を呼び出して、INSSBuffer3 インターフェイスへのポインターを取得します。
  6. INSSBuffer3::SetProperty メソッドを呼び出して、サンプルを強制キー フレームとして設定し、WM_SampleExtensionGUID_OutputCleanPoint プロパティを設定します。 このプロパティはブール値です。TRUE に設定 します
  7. IWMWriter::WriteSample メソッドを使用して、入力番号とサンプル時間と共にバッファー インターフェイスをライターに渡します。

IWMWriter::WriteSample

サンプルを書き込むには

可変ビット レート (VBR) エンコード

ASF ファイルの書き込み