ビデオ ストリームの構成
ビデオ ストリームは、オーディオ ストリームよりも構成の柔軟性が高くなります。 これは、ビデオを構成するフレームのプロパティは、ファイルごとに大きく異なる可能性があるためです。 使用しているコーデックのコーデック形式を取得する場合は、ビデオ ストリーム構成オブジェクトに次の値を設定する必要があります。
値 | 説明 |
---|---|
ビット レート | 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 メソッドを使用します。 設定する値は、コーデックでサポートされる最大複雑度以下である必要があります。
関連トピック