次の方法で共有


ビデオ エンコードの構成 (Microsoft Media Foundation)

ビデオ エンコーダーを構成するには、次の手順を実行します。

  1. IPropertyBag::Write を使用して、エンコーダー DMO のプロパティを設定します。 次の一覧は、CBR ビデオ ストリームをエンコードするために必要なプロパティの最小セットをまとめたものです (これらの値はすべて既定値で使用できます)。

    • MFPKEY_VIDEOWINDOW プロパティは、ストリームに使用するバッファー ウィンドウを指定します。 バッファー ウィンドウの設定と、それがコンテンツに与える影響の詳細については、「 Encoding Methods」を参照してください。 既定のバッファー ウィンドウは 3 秒であり、多くのシナリオに適しています。
    • ビデオの複雑さは、エンコードされたコンテンツの品質とエンコードに必要な時間のトレードオフを決定するために設定されます。 値を設定しない場合は、既定値が使用されます。 ただし、 IWMCodecProps::GetCodecProp を呼び出して、g_wszWMVCComplexityExLive、g_wszWMVCComplexityExOffline、およびg_wszWMVCComplexityExMaxを取得することで、特定のコーデックに推奨されるモードを見つけることができます。 次に、 MFPKEY_COMPLEXITYEX を 0 から報告された最大複雑度までの値に設定できます。
    • MFPKEY_CRISP は、ビデオの滑らかさの相対的な重要性と、エンコードされたフレームの画質を指定します。 ほとんどの場合、既定値は正常に動作します。
    • ASF 以外のコンテナーに格納されているビデオ コンテンツの場合は、 MFPKEY_ASFOVERHEADPERFRAME プロパティを 0 に設定する必要があります。 これは既定値ではありません。

    VBR ストリームの構成の詳細については、「 VBR エンコードの使用」を参照してください。

  2. 入力の種類の DMO_MEDIA_TYPE 構造を構成するか、Media Foundation SDK を使用している場合は、 MFInitMediaTypeFromVideoInfoHeader 関数を使用します。 圧縮されていない入力コンテンツを記述する VIDEOINFOHEADER 構造体を使用します。 コーデックはビデオのサイズを変更したり、色空間を変換したりしません。

  3. IMediaObject::SetInputType または IMFTransform::SetInputType を使用して入力の種類を設定します

  4. エンコーダーの出力の種類を構成します。 入力の種類が設定されると、エンコーダーは、VIDEOINFOHEADER 構造体の dwBitrate メンバー、または IMFMediaType インターフェイスの MF_MT_AVG_BITRATE 属性を除き、完全な出力型を列挙します。 入力型を設定する前に出力の種類を取得した場合、配信 されたDMO_MEDIA_TYPE 構造体には VIDEOINFOHEADER が関連付けられません。

  5. コーデックのプライベート データを取得し、DMO_MEDIA_TYPE構造体または IMFMediaType に渡す VIDEOINFOHEADER 構造体に追加します。 詳細については、「 ビデオ コーデックのプライベート データの使用」を参照してください。

  6. IMediaObject::SetOutputType メソッドまたは IMFTransform::SetOutputType メソッドを呼び出して、出力の種類を設定します。 pbFormat メンバーで参照されている完成した VIDEOINFOHEADER 構造体 (追加されたプライベート データを含む) を使用してDMO_MEDIA_TYPE構造体を渡すか、MFInitMediaTypeFromVideoInfoHeader を呼び出して IMFMediaType を構築します。

注意

ビデオ エンコーダー オブジェクトは、2 つの出力をサポートしています。 2 番目の出力は、エンコーダーの "ポスト ビュー" 用です。 これは、デコーダーから配信される非圧縮サンプルを提供します。 これにより、ストリーム全体が処理されるまで待機することなく、エンコードの品質を監視できます。 この出力は省略可能です。 これを使用する場合は、エンコーダー入力の種類を設定するために使用されるのと同じプロセスに従って、その型を構成します。

 

ビデオの操作