It’s more complicated (and weirder) than that.
Cloudflare passes along http status codes. If the origin sends a 206, cf will pass the 206 to the browser. However CF doesn’t buffer except on higher plans. In which case an incomplete file is transferred - a video that won’t play.
The fix is to make sure the origin is sending out the video with 200, rather than streaming it with 206. Mine does so. It’s cached at CF. It plays fine in Safari. EX: https://gravitywebworks.com/media/video/bh-480p-30.mp4 It’s under 400KB though, and maybe that matters.
And this is the weird part. This larger video, 3MB, comes through as 206. https://gravitywebworks.com/media/video/v24102919-1920x1080p.mp4
Maybe CF automatically streams larger files and this is what goofs up Safari.