I have a sequence of video files that I captured from my video camera using 
iMovie, so the output is a series of .mov files, one for each scene that iMovie 
detects.  The video is in mpeg2 format.  I’m trying to convert each file to 
h.264 in an mp4 container using the very simple:

    ffmpeg -i scene.mov scene.mp4

This works without any errors, but I end up with at least one extra frame at 
the start of each scene which is the last frame from the previous scene.

The original .mov files clearly contain these unwanted frames, but they do not 
show up when watching the video because the start time of the video is 
different than 0.  For example, when I run ffprobe on one of the files I get:

~/Desktop$ ffprobe scene.mov
ffprobe version 2.6.2 Copyright (c) 2007-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared 
--enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables 
--enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 
--enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype 
--enable-libvorbis --enable-libvpx --enable-libass --enable-ffplay 
--enable-libfdk-aac --enable-libopus --enable-libquvi --enable-libx265 
--enable-nonfree --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'scene.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2015-04-13 02:13:48
  Duration: 00:02:23.01, start: 0.234083, bitrate: 28184 kb/s
    Stream #0:0(und): Video: mpeg2video (Main) (hdv2 / 0x32766468), yuv420p(tv, 
bt709), 1440x1080 [SAR 4:3 DAR 16:9], 25002 kb/s, 29.97 fps, 29.97 tbr, 30k 
tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2015-04-13 02:13:48
      handler_name    : Core Media Data Handler
      encoder         : HDV 1080i60
      timecode        : 00:46:34;09
    Stream #0:1(und): Audio: pcm_f32le (fl32 / 0x32336C66), 48000 Hz, stereo, 
flt, 3072 kb/s (default)
    Metadata:
      creation_time   : 2015-04-13 02:13:48
      handler_name    : Core Media Data Handler
    Stream #0:2(und): Data: none (tmcd / 0x64636D74)
    Metadata:
      creation_time   : 2015-04-13 02:13:48
      handler_name    : Core Media Data Handler
      timecode        : 00:46:34;09
Unsupported codec with id 0 for input stream 2

Notice that the start time of the input is 0.234083.  Presumably this skips 
over the unwanted frames at the beginning.

I can get the correct output I want by using:

    ffmpeg -ss 0.234083 -i scene.mov scene.mp4

However, this requires knowing the start time for each file, and although I can 
do this without too much trouble in an awk script, I feel I must be missing 
something.  It seems like a clear error to me that the transcoded output does 
not faithfully reproduce the frames that will be displayed to the user in the 
input stream.

Are there flags I should be using to get the correct behavior?  I’ve played 
with various options but haven’t found anything that works.

Thanks,

Scott

_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

Reply via email to