From 2bd6215be2c5b49af30d6a1f4e2d23c3821710bd Mon Sep 17 00:00:00 2001 From: legop3 Date: Sat, 11 Jul 2026 12:26:13 -0400 Subject: [PATCH] transcoding adjustments --- plans/onvif-reolink.md | 3 +++ server/src/services/ptzCameraService/index.js | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/plans/onvif-reolink.md b/plans/onvif-reolink.md index 3f099736..f4573960 100644 --- a/plans/onvif-reolink.md +++ b/plans/onvif-reolink.md @@ -144,3 +144,6 @@ Input/control implementation: - all movement controls should send stop commands on key/button release, blur, disconnect, controller close, or turn loss ## NEW UI STUFF +- desktop: + - sidebar like there is now + - \ No newline at end of file diff --git a/server/src/services/ptzCameraService/index.js b/server/src/services/ptzCameraService/index.js index 896fc128..cd0ab3ef 100644 --- a/server/src/services/ptzCameraService/index.js +++ b/server/src/services/ptzCameraService/index.js @@ -275,6 +275,12 @@ function startPublisher() { that is useful for compression quality but harmful when the camera is being driven live. Sliced threads allow x264 to keep some parallelism without waiting on future frames the way normal frame-threading can. + + The RTSP and muxer flags below bias the whole pipeline toward "latest frame + wins". If the server falls behind, ffmpeg should discard stale video frames + instead of spending CPU to render a delayed backlog. That matters more for + PTZ control than perfect frame delivery because delayed motion feedback makes + the camera hard to aim. */ const proc = spawn('ffmpeg', [ '-hide_banner', @@ -283,12 +289,26 @@ function startPublisher() { '-nostdin', '-fflags', 'nobuffer', + '-avioflags', + 'direct', '-flags', 'low_delay', + '-use_wallclock_as_timestamps', + '1', + '-max_delay', + '0', + '-probesize', + '32768', + '-analyzeduration', + '0', '-rtsp_transport', 'tcp', '-i', input, + '-frame_drop_threshold', + '1', + '-fps_mode', + 'drop', '-map', '0:v:0', '-map', @@ -300,7 +320,7 @@ function startPublisher() { '-tune', 'zerolatency', '-threads', - '1', + '2', '-x264-params', 'sliced-threads=1:sync-lookahead=0:rc-lookahead=0:keyint=20:min-keyint=20:scenecut=0', '-bf',