ffmpeg压缩mp4视频没有播放mozilla文件损坏错误

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:

  • output mp4 is encoded with h264, support Firefox/Chrome/Safari in Windows, Mac OSX, Android, and iOS.
  • one mp4 file for all platforms, there is no need to encode an extra webm movie, which encoding speed is pretty slow.
  • format as yuv420p for Firefox compatibility, the downside is color becomes less-saturate than original gif.
  • yuv420p only support even width/height, so crop filter is required
  • -movflags +faststart flags are optimized for online view in browser
  • compression ratio typically 10:1, pretty awesome. note that if original gif is < 512KB, convert as mp4 is less efficient.

Incorporating 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.