私はv4l2loopback
v0.12.5を使用しており、wf-recorder
ウェイランドで画面を録画しています。ブラウザで読み込むビデオストリームのフレームレートを減らしたいです。現在は60fps以外は何も得られません。
私はwf-recorderバージョンを使用0.2.1
しました。このフォークフレームレートを設定するオプションが追加されたためです。ただし、同じ結果が表示されます。
wf-recorder
このコマンドで始めると:
wf-recorder \
-x yuv420p \
-g "$x,$y ${width}x$height" \
--muxer=v4l2 \
--codec=rawvideo \
--file="$device"
/sys/devices/virtual/video4linux/video0/format
次のようになります。
YU12:2560x1440@30
ただし、コマンド出力は@ 30の代わりに60のフレームレートを報告します。
selected region 0 0 2560 1440
Framerate: 60
Choosing pixel format yuv420p
Output #0, video4linux2,v4l2, to '/dev/video0':
Stream #0:0: Unknown: none (rawvideo)
デバイスの電源を入れると、ffplay
30fpsが報告されていることがわかります。
Input #0, video4linux2,v4l2, from '/dev/video0':B sq= 0B f=0/0
Duration: N/A, start: 1102.869115, bitrate: 1327104 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 2560x1440, 1327104 kb/s, 30 fps
使用Webcamtests.com〜60fpsのレポートを受けています。
wf-recorderを起動して-r
フラグを次のように設定すると6
:
wf-recorder \
-x yuv420p \
-r 6 \
-g "$x,$y ${width}x$height" \
--muxer=v4l2 \
--codec=rawvideo \
--file="$device"
wf-recorder
Framerate: 6
しかし、レポートには/sys/devices/virtual/video4linux/video0/format
まだYU12:2560x1440@30
。
wf-recorder
これにより、問題はツールを使用してフレームレートを設定できないことが問題ではないと信じていました。
代わりに端末の設定を変更したいと思います。ランニング:
echo "@6"| sudo tee /sys/devices/virtual/video4linux/video0/format
形式がに変更されたことを確認しましたYU12:2560x1440@6
。しかし、体感フレームレートは変わっていないようです。
私が実行した場合:
sudo v4l2-ctl -d /dev/video0 -p 6
形式が次のように変更されたことがわかります。YU12:2560x1440@6000/1000
しかし、認識されたフレームレートには変化はありません(私のブラウザではまだ60fps)。
これにカーネルモジュールに設定されたオプションがないようですv4l2loopback
。
アイデアが足りません。私が試すことができる他の方法はありますか?それとも私の貧しいコンピュータが永遠に100Mbitのビデオストリームだけを処理する運命ですか? :D
答え1
最後に、他のv4lデバイスと次のgstreamerコマンドを使用してこれを実行できました。
gst-launch-1.0 -v v4l2src device=/dev/video0 ! videorate drop-only=true ! video/x-raw,framerate=6/1 ! v4l2sink device=/dev/video1
答え2
始める前にv4l2loopbackデバイスで設定して、1秒あたりのフレーム数を10に制限できますwf-recorder
。
v4l2-ctl -d /dev/video6 --set-parm 10
これを実行した後にストリームを再生すると、ffplay /dev/video6
設定が確認されます。
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 2560x1410, 433152 kb/s, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
この設定のヘルプ出力はv4l2-ctl
次のとおりです。
$ v4l2-ctl --help-all
...
-P, --get-parm display video parameters [VIDIOC_G_PARM]
-p, --set-parm <fps>
set video framerate in <fps> [VIDIOC_S_PARM]
...