
v4l2loopback
私はv0.12.5を使用しており、 wf-recorder
Wayland で画面を録画しています。ブラウザで読み取るビデオ ストリームのフレーム レートを下げたいと考えています。現在、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
使用ウェブカメラテスト約 60fps が報告されます。
-r
代わりにフラグを次のように設定してwf-recorder を起動すると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
が、ここでも認識されるフレームレートには変化がありません (ブラウザでは依然として 60 fps です)。
カーネル モジュールでこれを設定するオプションはないようです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]
...