title: How to extract time-accurate video segments with ffmpeg?
body: <p>This is not a particularly new question area around here, but I've tried what's been suggested there without much luck.  So, my story:</p>
  
  <p>I've got a hunk of 15 seconds of straight-from-the-camera.mov video out of which I want to extract a specific chunk, which I can identify by start time and stop time, in seconds.  I started by trying to do what I'll call a "copy extraction": to get seconds 9 to 12,</p>
  
  <pre><code>ffmpeg -i test.mov -vcodec copy -acodec copy -ss 9 -to 12 test-copy.mov
  </code></pre>
  
  <p>This was a not-bad start, but there are some black frames at the beginning and end of the clip, which I can't have -- it has to be a clean edit from the original.  So, I tried recoding the original into a new, trimmed clip:</p>
  
  <pre><code>ffmpeg -i test.mov -ss 00:00:09 -t 00:00:03 test-out.mov
  </code></pre>
  
  <p>This is better, but not quite: There are no longer any black frames at the beginning of the clip, but they're still there at the end.</p>
  
  <p>After some more browsing and reading, I then suspected that the problem is that ffmpeg is having trouble finding the proper points because of a lack of keyframes in the original video.  So I recoded the original video to (presumably) add keyframes, in a couple of different ways.  Since I want to be able to pick video at boundaries of a second ("from 9 seconds to 12 seconds"), I tried, copying various suggestions around the web,</p>
  
  <pre><code>ffmpeg -i test.mov -force_key_frames "expr:gte(t, n_forced)" test-forced.mp4
  </code></pre>
  
  <p>and </p>
  
  <pre><code>ffmpeg -i test.mov -g 1 test-g-inserted.mp4
  </code></pre>
  
  <p>(I built these as mp4's based on some comments about an mp4 container being needed to support the keyframe search, but I'm honestly just hacking here.)  I then tried the extraction as before, but on these new videos that presumably now have keyframes in them.  No luck -- both seem to be about the same; the start is OK but there are still black frames at the end.  (FWIW, both test-forced.mp4 and test-g-inserted.mp4 also have trailing black frames.)</p>
  
  <p>So: I'm still stuck, and would like to not be.  Any insights out there as to what I'm doing wrong?  I feel like I'm close, but I really need to get rid of those trailing black frames....</p>