The keepalive serve ffmpeg rewrites its SDP on every watchdog restart (the SDP
it actually reads), and that rewrite path wasn't running _inject_sprop - so the
out-of-band SPS was dropped on restart and cached cameras STILL failed with
'could not find codec parameters' live (the output_path/snapshot SDP was
injected and tested, but the serve uses this restart rewrite). Inject there too.
Also: _save_sprop now logs on failure instead of swallowing it, so a
non-writable cache dir (AIDOT_SPROP_DIR redirectable) is visible rather than
silently inert.