
Estoy usando v4l2loopback
v0.12.5 y wf-recorder
grabo mi pantalla en Wayland. Estoy buscando reducir la velocidad de cuadros de la transmisión de video leída por mi navegador. Actualmente no puedo obtener nada más que 60 fps.
He usado la versión wf-recorder 0.2.1
yeste tenedorya que agrega la opción de configurar la velocidad de fotogramas. Sin embargo, obtengo el mismo resultado.
Si empiezo wf-recorder
con este comando:
wf-recorder \
-x yuv420p \
-g "$x,$y ${width}x$height" \
--muxer=v4l2 \
--codec=rawvideo \
--file="$device"
/sys/devices/virtual/video4linux/video0/format
Se ve como esto:
YU12:2560x1440@30
Sin embargo, el resultado del comando informa que la velocidad de fotogramas es 60, no @30:
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)
Si abro el dispositivo ffplay
veo que informa 30 fps:
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
Usandowebcamtests.comRecibo ~60 fps reportados.
Si, en cambio, inicio wf-recorder con el -r
indicador configurado en 6
:
wf-recorder \
-x yuv420p \
-r 6 \
-g "$x,$y ${width}x$height" \
--muxer=v4l2 \
--codec=rawvideo \
--file="$device"
wf-recorder
Framerate: 6
Sin embargo, los informes /sys/devices/virtual/video4linux/video0/format
todavía lo muestran YU12:2560x1440@30
.
Esto me lleva a creer que el problema no está en wf-recorder
, o más bien en que no puedo configurar la velocidad de fotogramas con esa herramienta.
En lugar de eso, busqué cambiar la configuración del dispositivo. Correr:
echo "@6"| sudo tee /sys/devices/virtual/video4linux/video0/format
Veo que el formato cambia a YU12:2560x1440@6
. Sin embargo, no veo ningún cambio en la velocidad de fotogramas percibida.
Si corro:
sudo v4l2-ctl -d /dev/video0 -p 6
Veo que el formato cambia a: YU12:2560x1440@6000/1000
pero nuevamente no veo ningún cambio en la velocidad de fotogramas percibida (aún 60 fps en mi navegador).
No parece haber ninguna opción para configurar para esto en el v4l2loopback
módulo del kernel.
Me estoy quedando sin ideas: ¿hay algo más que pueda probar o mi pobre computadora está condenada a procesar transmisiones de video de 100 Mbit para siempre? :D
Respuesta1
Al final pude hacer esto con otro dispositivo v4l y este comando gstreamer:
gst-launch-1.0 -v v4l2src device=/dev/video0 ! videorate drop-only=true ! video/x-raw,framerate=6/1 ! v4l2sink device=/dev/video1
Respuesta2
Pude limitar los fotogramas por segundo a 10 configurándolo en el dispositivo v4l2loopback de esta manera antes del inicio wf-recorder
.
v4l2-ctl -d /dev/video6 --set-parm 10
Reproducir la transmisión ffplay /dev/video6
después de hacer esto confirmó la configuración:
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 2560x1410, 433152 kb/s, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
El resultado de ayuda de v4l2-ctl
tiene lo siguiente sobre esta configuración:
$ 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]
...