August 1, 2013

Fast-Start Enabled Videos with FFMpeg

MPEG 4 is the most dominant video format for the web, which is supported on a variety of platforms and devices. And FFmpeg is the most popular software for encoding videos. While there are tons of articles about encoding MPEG 4 videos with FFmpeg, most of them fail to warn you about something: most video players will not start the playback until the whole video is downloaded. This could be annoying, especially for large videos.

Film leader

Here is a video encoded with the following command and played using the HTML5 video tag:

ffmpeg.exe -i big_buck_bunny_trailer-1080p.ogg -c:v libx264 -profile:v baseline -preset slow -b:v 800k -c:a libvo_aacenc -b:a 128k -s 512x288 big_buck_bunny_trailer-288p.mp4

HTML5 Video 1

To create a "fast-start" enabled video using FFMpeg, specify -movflags faststart parameter in the command 2:

ffmpeg.exe -i big_buck_bunny_trailer-1080p.ogg -c:v libx264 -profile:v baseline -preset slow -b:v 800k -c:a libvo_aacenc -b:a 128k -s 512x288 -movflags faststart big_buck_bunny_trailer-288p-faststart.mp4

The following videos should start quickly, long before the video is downloaded completely:

HTML5 Video

Footnotes
  1. If the video starts immediately then either the video is already in your browser cache or you have a very fast internet connection.
  2. The older way of enabling fast start plus the gory details are discussed here.