Windows Media Video 9 画面コーデックを使用した良好な結果の取得

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

Windows Media Video 9 Screen コーデックは、画面キャプチャ用に圧縮されたビデオを生成するように設計されています。 画面キャプチャの必要性のほとんどは非常に単純で静的な画像を含むので、高レベルの圧縮は通常、画質の大きな犠牲を意味するものではありません。 ただし、各画面キャプチャは異なり、結果の画質は状況によって大きく異なる場合があります。

画面コーデック セッションのプロファイル設定を決定する最善の方法は、品質ベースの可変ビットレート ストリームを使用してテスト ファイルをエンコードすることです。 品質を必要な値に設定し、最終的なファイルを記録しているかのように画面キャプチャをエンコードします。 ファイルが書き込まれたら、非同期リーダー オブジェクトを使用して再生し、 IWMReaderAdvanced::GetStatistics を定期的に呼び出します。 各呼び出しのWM_READER_STATISTICS構造体の dwBandwidth メンバーの値を監視することで、必要な品質を実現するために必要なおおよそのビット レートを決定できます。 その後、そのビット レートを定数ビット レート エンコードに使用できます。

必要な品質に、配信シナリオで使用できるビット レートよりも高いビット レートが必要である場合は、次の手法を試してコーデックの効率を高めることができます。

  • 画面キャプチャには、より小さな解像度を使用します。 必要以上に大きな画面解像度をキャプチャすると、必要以上の情報が表示され、ビューアーが混乱する可能性もあります。
  • 画面キャプチャで使用するグラフィックスの数を減らします。 Windows Media Video 9 Screen コーデックは、Windows プリミティブとテキストを高品質でエンコードするように最適化されています。 通常、問題は、多くの場合、個々の色の数千を含むビットマップ グラフィックスが原因で発生します。 キャプチャ時に画面に表示されるビットマップが少ないほど、結果は向上します。 画面キャプチャからグラフィックスを排除できない場合は、ビットマップが画質に与える影響を最小限に抑える方法がいくつかあります。
    • グラフィックのサイズを小さくします。
    • 同時に画面に表示される個々のグラフィックスの数を減らします。
    • グラフィックの移動量を減らします。 たとえば、グラフィックがウィンドウ内にある場合は、ウィンドウをできるだけ固定したままにします。
    • マウス ポインターをグラフィック上に移動したり、ウィンドウやその他の要素をグラフィック上にドラッグしたりしないでください。
  • 遅い フレーム レートを使用します。 スクリーン キャプチャは、非常に低いフレーム レート (場合によっては 1 秒あたり 4 フレームまたは 5 フレーム) で有効になる場合があります。
  • 付随するオーディオのビットレートを下げる。

また、コーデックはビデオの四角形のサイズ変更をサポートしていません。 言い換えると、コーデックを使用して 800 x 600 画面を 640 x 480 のビデオ四角形にエンコードしようとすると、結果として得られるビデオには、画面上のテキストの多くが読み取り不可能になる可能性がある重要な成果物が含まれます。

画面キャプチャ ストリームの構成

ストリームの構成