0

DirectShow SDK の pushsource の例に基づいて、DirectShow ソース フィルタを作成しようとしています。私のソース フィルターは基本的に、ビットマップのセットを出力します。各ビットマップは通常、約 600 ミリ秒続きます。Async_reader とオーディオ用の Wave パーサーを使用するフィルター グラフと、新しいフィルターを使用してビデオをプッシュするフィルター グラフをセットアップしました (フィルターは CSourceStream であり、フレームを FillBuffer 関数に入力します)。これらは両方とも WMASFWriter に接続され、WMV を出力します。

私が見つけたのは、キーフレーム間隔に対応する時間に、ビデオが 1 ~ 2 秒間一時停止することです。これは、HD 解像度ではさらに悪化しているように見えます。これはどのようなことが原因である可能性がありますか? FillBuffer の呼び出しを許可する頻度に関連していますか (私のフレーム レートは 30fps であるため、同じビットマップが複数のフレームで繰り返されます)。

4

1 に答える 1

2

(問題となっている効果に関する特定の経験とは対照的に) 常識では、キー フレームのエンコードは帯域幅を大量に消費し、残りはキー フレームの直後に続くセグメントの動きをエンコードするには不十分であることが示唆されます。これは CBR モードだと思いますが、おそらく VBR モードの方がエンコーディングが改善される可能性があります。

于 2012-01-31T11:42:25.853 に答える