Skip to content

Commit df1e3ad

Browse files
committed
Fix writer defaults and buffer time fallback
Ensure ffmpeg writer defaults (`-input_framerate`, `-vcodec`, `-crf`) are always applied, even when custom writer options are provided, while still allowing overrides via `writer_options`. Also improve recorder stats by estimating `buffer_seconds` from average or last frame latency when write FPS is unavailable, avoiding zero/underreported buffer duration.
1 parent 124d7cb commit df1e3ad

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

dlclivegui/services/video_recorder.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -185,16 +185,17 @@ def start(self) -> None:
185185
"logging": False,
186186
}
187187

188+
codec_value = (self._codec or "libx264").strip() or "libx264"
189+
writer_kwargs: dict[str, Any] = {
190+
"compression_mode": True,
191+
"logging": False,
192+
"-input_framerate": fps_value,
193+
"-vcodec": codec_value,
194+
"-crf": int(self._crf),
195+
}
196+
188197
if self._writer_options is not None:
189198
writer_kwargs.update(self._writer_options)
190-
else:
191-
writer_kwargs.update(
192-
{
193-
"-input_framerate": fps_value,
194-
"-vcodec": codec_value,
195-
"-crf": int(self._crf),
196-
}
197-
)
198199

199200
# if not self._convert_grayscale_to_rgb:
200201
# writer_kwargs.update(
@@ -389,7 +390,15 @@ def get_stats(self) -> RecorderStats | None:
389390
avg_latency = self._total_latency / self._frames_written if self._frames_written else 0.0
390391
last_latency = self._last_latency
391392
write_fps = self._compute_write_fps_locked()
392-
buffer_seconds = queue_size / write_fps if write_fps > 0 else 0.0
393+
394+
if write_fps > 0:
395+
buffer_seconds = queue_size / write_fps
396+
elif avg_latency > 0:
397+
buffer_seconds = queue_size * avg_latency
398+
elif last_latency > 0:
399+
buffer_seconds = queue_size * last_latency
400+
else:
401+
buffer_seconds = 0.0
393402
return RecorderStats(
394403
frames_enqueued=frames_enqueued,
395404
frames_written=frames_written,

0 commit comments

Comments
 (0)