Best practice for streaming large MP4 videos in browser:Django backend vs NGINX (moov atom, ranges) [closed]

I’m working on a web dashboard where users need to play large MP4 videos (around 300–400 MB) directly in the browser and switch between videos quickly (different users/patients).

I noticed that if an MP4 doesn’t have the moov atom at the beginning, browsers fail to play it (while VLC works). After fixing this using ffmpeg (faststart), playback improves.

Currently, I’m streaming videos through a backend server (Django) using HTTP range requests. It works for light usage, but fast seeking and rapid video switching feel unreliable.

My question is:
Is it generally recommended to stream large videos directly from an application backend, or is the industry best practice to use a web server like NGINX (or CDN) for video delivery, with the backend only handling auth and returning the video URL?

Вернуться на верх