0

DirectX.Capture ライブラリを使用して、AVI 形式の Web カメラに保存しています。50fps 以上のビデオを保存する必要がありますが、これを使用すると:

 capture.FrameRate = 59.994; 

FrameRate はまったく変化しません。その行の前には 30 があり、その行を通過しても 30 のままです。20 や 10 など、他の値を試してみましたが、何も変わりません。

その値を変更できるようにするには、他に何をすればよいですか? またはそれは私のハードウェアに関するもので、他のマシンで動作することを願っていますか?

どうすればいいのかわからないので、助けてください。

ありがとう

4

1 に答える 1

0

ソースマテリアル(ビデオ、アプリなど)は、おそらく30 fpsでのみ更新されます。これは、ビデオコーデックまたはアプリの動作方法であるか、ターゲットアプリでvsyncがオンになっているためです(vsync設定を確認してください。ハードウェアアクセラレーションがある場合、ビデオカードドライバによって強制されます)。DirectX.Captureの動作は、おそらくソースから利用可能な最高のフレームレートにクランプすることです。

ビデオを本当に50fpsにしたい場合は、ネイティブレート(30 / 29.97)でキャプチャし、他のソフトウェアを使用してビデオをリサンプリングします(50は30のクリーンな倍数ではないため、これは破壊的な操作になることに注意してください)。これは、50 fpsで強制できる場合(ソースマテリアルのフレームレートが低いために無意味であっても)、DXキャプチャが行うことと同じです。参考までに、ほとんどのビデオファイルは25〜30FPSです。

于 2013-03-06T10:15:01.947 に答える