저는 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
사용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 비디오 스트림만 처리할 운명인가요? :디
답변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 장치에서 설정하여 초당 프레임 수를 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]
...