ビデオ ストリームの構成

ビデオ ストリームは、オーディオ ストリームよりも構成の柔軟性が高くなります。 これは、ビデオを構成するフレームのプロパティは、ファイルごとに大きく異なる可能性があるためです。 使用しているコーデックのコーデック形式を取得する場合は、ビデオ ストリーム構成オブジェクトに次の値を設定する必要があります。

説明
ビット レート IWMStreamConfig::SetBitrate を呼び出して、目的の値に設定します。 ビデオ コーデックは、仕様に合わせてメディアを圧縮しようとします。 値が小さすぎると、圧縮されたビデオが非常に低下します。
バッファー ウィンドウ IWMStreamConfig::SetBufferWindow を呼び出して、目的の値に設定します。 ビデオ コーデックは、仕様に合わせてメディアを圧縮しようとします。 値が小さすぎると、圧縮されたビデオが非常に低下します。
WMVIDEOINFOHEADER.rcSource 左上隅は 0,0 に設定する必要があります。 右下隅はフレームの寸法に設定する必要があります。 たとえば、640x480 ストリームでは、これらの設定は 0,0,640,480 になります。
WMVIDEOINFOHEADER.rcTarget rcSource と一致する必要があります。
WMVIDEOINFOHEADER.dwBitRate ストリームのビット レート セットと一致する必要があります。
WMVIDEOINFOHEADER。AvgTimePerFrame フレームあたりのおおよその時間に設定します。
BITMAPINFOHEADER.biWidth 目的のフレーム サイズの幅 (ピクセル単位) に設定します。
BITMAPINFOHEADER.biHeight 目的のフレーム サイズの高さをピクセル単位で設定します。

 

ビデオ コンテンツは、幅と高さの両方に対して 4 の倍数のサイズにエンコードされていない限り、正しく再生されません。 例外は RGB 圧縮されていないビデオで、任意のサイズにすることができます。 4 の倍数ではないサイズを設定しようとすると、ライターによって次のいずれかのエラーが返されます。

  • NS_E_INVALID_INPUT_FORMAT
  • NS_E_INVALID_OUTPUT_FORMAT
  • NS_E_INVALIDPROFILE

可変ビット レート エンコードを使用している場合は、他の調整が必要になる場合があります。 詳細については、「 VBR ストリームの構成」を参照してください。

一部の Windows Media Video コーデックでは、複数の複雑さのレベルがサポートされています。 複雑さのレベルは、ビデオ ストリームをエンコードするときにコーデックが使用するアルゴリズムを決定します。 高い複雑度レベルを使用すると、エンコードとデコードに対してより多くの処理能力が必要になります。

複雑さの設定をサポートする各コーデックは、 IWMCodecInfo3::GetCodecProp メソッドを使用して取得できる次の設定を公開します。

設定 Description
g_wszComplexityMax コーデックでサポートされる最大品質レベル。
g_wszComplexityOffline オフライン再生に推奨される品質レベル。
g_wszComplexityLive ストリーミング再生に推奨される品質レベル。

 

プロファイル内のビデオ ストリームの複雑さを設定するには、 プロパティ g_wszComplexityを使用して IWMPropertyVault::SetProperty メソッドを使用します。 設定する値は、コーデックでサポートされる最大複雑度以下である必要があります。

すべてのストリームに共通の構成

ストリームの構成

ビデオの複雑さの設定