mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-05-09 07:04:55 -04:00
Fragment tracking: - Rewrite detection to use avio_flush()+avio_tell() before each video keyframe write, giving exact fragment boundaries. Fixes duplicate entries and missing first fragment in the m3u8 manifest. - Remove unused pending_fragment_dts_ and last_flush_pos_ members. Live event playback: - Set DefaultVideo to index.m3u8 at event INSERT time (no DB update needed after videoStore opens) - Rename incomplete file to include codec (incomplete.h264.mp4) so canPlayCodec() works during recording - Rewrite final m3u8 after video file rename to reference final name - Add live retry handler in event.php: retries all error codes with backoff (3s then 5s), max 30 retries, resets on successful playback - Update progress bar duration from video element for live events Fallback handling: - view_video.php: when DefaultVideo is m3u8 and no file param given, search event dir for actual mp4 (final name then incomplete) - view_hls.php: reject m3u8 with no EXTINF entries (event just started) - event.php: require m3u8 file to exist on disk before offering HLS, fall back to direct MP4 otherwise Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>