次の方法で共有


インターレース ビデオを使用するには

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

ビデオ エンコードには、プログレッシブとインターレースの 2 種類の基本的な種類があります。 プログレッシブ エンコードでは、各フレームはビデオの 1 フレームのエンコードされた表現です。 インターレース エンコードでは、各フレームは、ビデオ内のすべての偶数行のピクセル、またはすべての奇数行のエンコードされた表現です。 インターレースされた各フレームは フィールドと呼ばれるので、奇数フィールドと偶数フィールドがあります。 インターレースディスプレイ (テレビなど) は、フィールドを一度に 1 つずつレンダリングし、フィールドを交互にレンダリングします。 プログレッシブ ディスプレイでは、フレームがすべて一度にレンダリングされます。

Windows Media Video 9 Advanced Profile コーデックは、圧縮ストリームでのインターレースを維持するためのサポートを提供します。

インターレース ビデオを使用するタイミング

インターレースされたビデオのエンコードは、インターレースされたデバイスにコンテンツが表示されている場合にのみ役立ちます。 (セットトップ ボックスまたはその他のデバイスを介して) テレビで表示することを目的としたコンテンツは、インターレースが必要な場合があります。 コンピューターのディスプレイで排他的に表示することを目的としたコンテンツは、インターレースとしてエンコードしないでください。

インターレースされたビデオをプログレッシブ ビデオとしてエンコードするには、入力設定を構成する必要があります。 詳細については、「ビデオの インターレースを解除するには」を参照してください。

フィールドの順序

ビデオ キャプチャ カードなど、インターレースされたビデオのほとんどのソースは、互いにインターリーブされた両方のフィールドを含むビデオ サンプルを提供します。 結果はビデオの完全なフレームのようなものですが、奇数行と偶数行が少しずれている点が異なります。 インターリーブされたビデオ サンプルのどのフィールドが最初に発生するかを示す普遍的な標準はありません。

インターレースされたサンプルをアプリケーションに渡すときに、ユーザーがフィールドの順序を指定できるようにする必要があります。

インターレース ビデオのエンコード

インターレース エンコードを使用するには、次の手順を実行します。

  1. IWMStreamConfig2::AddDataUnitExtension メソッドを呼び出して、コンテンツ タイプ データ ユニット拡張機能を使用するようにプロファイル内のビデオ ストリームを構成します。 コンテンツ タイプ拡張機能のサンプル拡張機能 GUID はWM_SampleExtensionsGUID_ContentType。
  2. プロファイルでストリームを設定し、通常どおりにプロファイルを使用してライターを構成します。
  3. インターレースされたサンプルをライターに渡す前に、 IWMWriterAdvanced2::SetInputSetting メソッドを呼び出して、g_wszInterlacedCoding入力設定を TRUE に設定します。
  4. ライターに渡すインターレースされたサンプルごとに、 INSSBuffer3::SetProperty メソッドを呼び出してコンテンツ タイプを設定します。 コンテンツ タイプの値は、次の表のフラグの組み合わせです。
フラグ 説明
WM_CT_INTERLACED インターレース コンテンツをエンコードする場合は、常にこのフラグを設定します。 フィールド順フラグ (WM_CT_BOTTOM_FIELD_FIRSTまたはWM_CT_TOP_FIELD_FIRST) を設定せずにこのフラグを使用すると、コーデックは先頭フィールドが最初であると見なします。 コーデックが間違ったフィールド順序を使用している場合は、画質に影響を与えるべきではありませんが、エンコード効率は影響を受けます。
WM_CT_BOTTOM_FIELD_FIRST WM_CT_INTERLACED フラグと組み合わせると、このフラグは、一番下のフィールド (サンプルの 2 行目から始まるフィールド) が最初に発生することを示します。
WM_CT_TOP_FIELD_FIRST WM_CT_INTERLACED フラグと組み合わせると、このフラグは、先頭フィールド (サンプルの最初の行で始まるフィールド) が最初に発生することを示します。
WM_CT_REPEAT_FIRST_FIELD サンプルの最初のフィールドを再生時に繰り返す必要があることを示します。 このフラグは、telecine プロセスによってフィルムから作成されたビデオに使用されます。このフラグと組み合わせてフィールド順序フラグが設定されていない場合、先頭フィールドは最初に発生すると見なされます。

注意

WM_CT_INTERLACED フラグが設定されていない場合、サンプルにはプログレッシブ ビデオ フレームが含まれていると見なされます。

インターレースされたビデオのデコード

インターレース ビデオをデコードする場合は、IWMReaderAdvanced2::SetOutputSetting メソッドを使用して、g_wszAllowInterlacedOutput設定を TRUE に設定する必要があります。 それ以外の場合、コーデックはプログレッシブ フレームを配信します。

コンテンツ タイプ データ ユニット拡張機能は、出力サンプルで保持されます。 適切な再生を確保するには、レンダリング デバイスにフィールドの向きを渡す必要があります。

高度なトピック