Frigate NVR playback fails on Apple devices via empty fMP4 fragments
Users are reporting that playback of recorded video from Frigate's VOD HLS playlist stalls on Apple iOS and Safari devices due to the playlist referencing empty fMP4 fragments. This issue appears to be specific to Frigate's HLS playlist generation and affects Hikvision cameras, while other playback paths for the same files work correctly. The problem seems to stem from a strict Apple decoder stalling on data-less fragments.
Key Takeaways
- Affected playlists contain two empty 164-byte fragments for every one media-bearing fragment.
- Playback stalls occur specifically on Apple's native HLS implementation, while Chrome and other browsers remain unaffected.
- Hardware-specific factors, such as Hikvision camera encoders, may influence the generation of these data-less fragments.
- Direct MP4 downloads and server-side exports of the same files function correctly, isolating the bug to HLS manifest generation.
Why It Matters
This bug highlights the sensitivity of Apple’s AVPlayer to strict HLS compliance, specifically regarding fMP4 segment encapsulation. While fragmented MP4 was intended to unify HLS and DASH workflows, implementation discrepancies in NVR software like Frigate can lead to critical ecosystem fragmentation where playback fails only on mobile devices. For infrastructure engineers, this underscores the risk of relying on client-side stitching for VOD without robust validation of fragment data. Watch for a Frigate update to the recording-review manifest logic to prune empty segments from the index-v1.m3u8 file.
Additional Context
The challenges of HLS playback on Apple devices are well documented, often stemming from the unique requirements of the AVFoundation framework. Per search results from February 2026, developers continue to report stuttering at fMP4 segment boundaries in Apple's players, often requiring the use of Apple's mediastreamvalidator tool to identify subtle segmentation and timestamp issues that do not affect other platforms. This tool, recently made available for Linux, is critical for debugging the strict IDR and PTS continuity requirements that Apple enforces. Related issues have surfaced in other media server environments. For instance, per GitHub reports from December 2025, Jellyfin users experienced similar playback breaks on iOS during transcoding-induced seeks, frequently linked to non-keyframe seek requests. Furthermore, previous discussions in the Frigate community from June 2025 suggested that high-resolution H.264 streams sometimes trigger 'error 499' in Nginx logs on iOS 18, leading some users to switch to H.265 for better mobile compatibility. Industry analysts at Bitmovin have noted since the introduction of fMP4 support in HLS at WWDC16 that while the format reduces storage footprints by allowing a single set of segments for both HLS and DASH, it increases the complexity of manifest generation. Because Apple's browsers do not support Media Source Extensions (MSE) in the same way as Chrome or Firefox, they rely on a native implementation that is less tolerant of 'data-less' fragments or incorrect byte-range headers, a factor that continues to cause friction for open-source NVR and streaming platforms.
Read full article at github.com
Get this in your inbox → Subscribe
Enjoy our coverage?
Add StreamingMeme as a preferred source on Google to see more of our streaming news at the top of your Search results.
Add as preferred source