v4l2デバイスの出力フレームレートの設定

v4l2デバイスの出力フレームレートの設定

私はv4l2loopbackv0.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)

デバイスの電源を入れると、ffplay30fpsが報告されていることがわかります。

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-recorderFramerate: 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

おすすめ記事