
我正在使用v4l2loopback
v0.12.5 並wf-recorder
在 wayland 上錄製我的螢幕。我希望降低瀏覽器讀取的視訊串流的幀速率。目前我無法獲得 60fps 之外的任何內容。
我使用過版本 wf-recorder0.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
然而,命令輸出報告幀率為 60 而不是 @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)
如果我打開設備,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 裝置上進行設定將每秒幀數限制為 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]
...