title: Creating thumbnails with FFmpeg
body: <p>I am using FFmpeg to extract thumbnails from specific positions of video files.</p>
  
  <p>I found on the web two approaches to do this:</p>
  
  <ol>
  <li><p>With <code>-ss</code> (seek) parameter before <code>-i</code> (input) parameter:</p>
  
  <p><code>ffmpeg -y -ss $SEEK_POINT -i input.ogv -vcodec mjpeg -vframes 1 -an -s 120x90 -f rawvideo output.jpg</code></p></li>
  <li><p>With <code>-ss</code> (seek) parameter after <code>-i</code> (input) parameter:</p>
  
  <p><code>ffmpeg -y -i input.ogv -vcodec mjpeg -ss $SEEK_POINT -vframes 1 -an -s 120x90 -f rawvideo output.jpg</code></p></li>
  </ol>
  
  <p>The first method generates a bad thumbnail with gray spots, but works very fast. The error returned is <code>[theora @ 0x8097240] vp3: first frame not a keyframe</code>.</p>
  
  <p>The second method always works but show an error which cause the extraction to take a lot of time. This amount of time is not fixed and it depends on the seek point as I noticed. Sometimes it takes a few seconds and other times several minutes to extract a thumbnail. I get the error <code>Buffering several frames is not supported. Please consume all available frames before adding a new one.</code> in the following output:</p>
  
  <pre><code>Input #0, ogg, from 'input.ogv':
    Duration: 00:21:52.76, start: 0.000000, bitrate: 844 kb/s
      Stream #0.0: Video: theora, yuv420p, 800x600 [PAR 4:3 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
      Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16, 192 kb/s
      Metadata:
        ENCODER         : Lavf52.102.0
  Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting format 'yuvj420p'                                                                         
  [buffer @ 0x9250840] w:800 h:600 pixfmt:yuv420p                                 
  [scale @ 0x92508a0] w:800 h:600 fmt:yuv420p -&gt; w:120 h:90 fmt:yuvj420p flags:0x4
  Output #0, rawvideo, to 'output.jpg':
    Metadata:
      encoder         : Lavf53.2.0
      Stream #0.0: Video: mjpeg, yuvj420p, 120x90 [PAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
  Stream mapping:
    Stream #0.0 -&gt; #0.0
  Press ctrl-c to stop encoding
  [buffer @ 0x9250840] Buffering several frames is not supported. Please consume all available frames before adding a new one.                                    
  frame=    0 fps=  0 q=0.0 size=       0kB time=10000000000.00 bitrate=   0.0kbit
  Last message repeated 15448 times
  frame=    1 fps=  0 q=3.4 Lsize=       3kB time=0.04 bitrate= 598.8kbits/s    
  video:3kB audio:0kB global headers:0kB muxing overhead 0.000000%
  </code></pre>
  
  <p><strong>How can I extract thumbnails without any problems using FFmpeg from a custom position of a video regardless of the input format?</strong></p>