Videos: a recording says when it starts and when it stutters

- The start line, the warning while recording and the summary at
  the end, with their thresholds and where they show.
- Development counts 2080 checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-10-14 11:21:48 +02:00
1 parent 32fa30a983
commit 0176480cb9
2 files changed
+17 -3

No files matched your search

+1 -1
@@ -21,7 +21,7 @@ php tests/php/releases.test.php # the release stor
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
php tests/php/videos.test.php # the video store, its queue and the worker (#402), with the
# real ffmpeg: the CI image and feuerwerk-video have it
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2077 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2080 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+16 -2
@@ -222,8 +222,20 @@ Two action nodes record what the game view shows, with what the master plays (#4
and **Import after conversion** do nothing there.
- **A file of 2 GB**, the most an upload may be, ends the recording and saves it, with a line in
the log. At 1080p60 that is roughly half an hour.
- **When the encoder cannot keep up**, a frame is left out rather than everything falling behind;
the converted MP4 has a constant frame rate again.
- **The log says what it records:** an info line when it starts, with its size, fps, codec and
whether it has sound, such as `Recording "Trailer" started: 3840x2160 at 60 fps, H.264, with
sound`.
- **When the computer cannot keep up**, a frame is left out rather than everything falling behind:
the editor drew too late for it, or the encoder was still busy. The time in the file stays right,
but the picture stutters. The recording says so in the log twice, as a warning. Once while it
records, the first time it misses more than a tenth of its frames over 2 s, such as
`Recording "Trailer" can't keep up: about 38 of 60 fps, so the video will stutter`. And once when
it is saved, if it missed more than 5 % in all, such as `Recording "Trailer" has 517 of 827
frames: 310 missed (37 %), so it stutters`, with a hint that 30 fps or a smaller resolution
helps. Its first second is left out of both: a short stall while it starts is no stutter. The
line at the end comes after the run, so in the editor it is in the console panel. 4K at 60 fps
is too much for most computers: reading each frame back from the GPU takes longer than a frame.
The converted MP4 has a constant frame rate again.
How it is made: H.264 from Chrome's `VideoEncoder` (VP9 where there is no H.264), hardware where
the computer has it, 10 Mbit/s at 1080p60, a keyframe every 2 s. The file is Matroska, written by
@@ -268,6 +280,8 @@ The recording is always uploaded; **Download** in the video picker saves it as i
3840x2160 needs a window of that shape: open the editor with `?w=1920&h=1080`.
- **Cost:** 4K at 60 fps is about 40 Mbit/s, so the 2 GB a file may have last about 7 minutes. The
encoder is whatever Chrome has; frames it cannot keep up with are dropped. 30 fps halves both.
It warns of a stutter as the game view recording does, in the notice line. The line when it
starts stays in the console panel: the notice would be in the recording.
- **The mouse pointer** is drawn in when asked: the system draws it over the page, so it is not in
the canvas; the recording draws its own in the shape the editor shows (arrow, hand, resize
arrows, I-beam, crosshair).