I have compressed mp4 video using ffmpeg in php environment. Videos are being compressed but these are not playing in firefox showing error:
Video can't be played because the file is corrupt
while this video is playing fine in VLC media player also in chrome browser. My code of comression is as-
exec("ffmpeg -i input.mp4 -acodec mp2 output.mp4");
I know this is a few months old, but in case anyone is still intereste: I had this same thing happen and I found it was because my MP4s were encoded in "MPEG-4 Simple profile" a.k.a. H.263/MPEG4 part 2/xvid. These formats are not supported for playback in most browsers any more.
Transcoding the files to H.264 fixed the problem.
I struggled with this problem until I discovered this gist entitled 'ffmpeg convert gif to mp4, for best cross browser compatibility'. It uses this command:
ffmpeg -f gif -i FOO.gif -pix_fmt yuv420p -c:v libx264 -movflags +faststart -filter:v crop='floor(in_w/2)*2:floor(in_h/2)*2' BAR.mp4
It has these notes on how it works:
webm
movie, which encoding speed is pretty slow.yuv420p
for Firefox compatibility, the downside is color becomes less-saturate than original gif.-movflags +faststart
flags are optimized for online view in browserIncorporating that into my ffmpeg command, I find that the videos now run in Firefox, Safari, Opera and QuickTime (where previously only Chrome and VLC worked for me).
Credit to ingramchen, who wrote the gist.