plays in other browsers, but not Safari

Safari requires webserver to support “Range” request header in order to play your media content. https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html#//apple_ref/doc/uid/TP40006514-SW6 For a legit “Range” request response, your webserve need to return status code “206”.

How to output fragmented mp4 with ffmpeg?

This should do the trick: ffmpeg -re -i infile.ext -g 52 \ -c:a aac -b:a 64k -c:v libx264 -b:v 448k \ -f mp4 -movflags frag_keyframe+empty_moov \ output.mp4 frag_keyframe causes fragmented output, empty_moov will cause output to be 100% fragmented; without this the first fragment will be muxed as a short movie (using moov) followed by … Read more

Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

First off, it’s important to understand that there is no single standard H.264 elementary bitstream format. The specification document does contain an Annex, specifically Annex B, that describes one possible format, but it is not an actual requirement. The standard specifies how video is encoded into individual packets. How these packets are stored and transmitted … Read more