That problem occurs if the moov atom is at the end of the MP4 container. It contains necessary metadata for the playback. Those are for example codecs, resolution, framerate and samplerate. Luckily it’s also possible to put the moov atom at the beginning of the MP4 container. If that is the case you can play the file already during the download (progressive download).
FFmpeg parameter:
-movflags +faststart
(Puts the moov atom at the beginning of the container)
Other container:
- AVI: playable during download (no seek possible, cause the idx1-chunk is at the end of the file)
- MKV: playable during download (seek possible, but just within the already downloaded part)