You‘re right, it‘s apparently not a serving issue but a request problem. I have a standard .mp4 which can be played on iOS devices without problems if accessed on the server directly, so no format issue here.
In Files in iOS Safari, the play-button is broken.
Consulting Apple‘s Developer page:
HTTP servers hosting media files for iOS must support byte-range requests, which iOS uses to perform random access in media playback. (Byte-range support is also known as content-range or partial-range support.) Most, but not all, HTTP 1.1 servers already support byte-range requests.
Checking the server with curl replies with
Response Headers
Accept-Ranges:bytes
Content-Length:42563120
Content-Type:video/mp4;charset=UTF-8
and even the Apache configuration says that byte-range is supported. Also it works perfectly when using any browser on any other system.
So basically Safari iOS is making an initial request like expected, but then requests subsequent chunks using the Range header. Maybe a header to accept range has to be sent.
I checked various iOS devices, all the same. Has someone successfully streamed video in Files on any iOS device?