[FFmpeg-user] frame accurate durations

Chris Vincze chris-v at moving-picture.com
Tue May 29 21:40:09 CEST 2012


Hi there,

I'm trying to split up a quicktime to render over multiple machines for a later concatenation, and having trouble getting the sections to be the right length.

These are the command line inputs, splitting the quicktime into chunks of 9 frames (this is a test clip, the usual renders are longer)

/usr/local/bin/ffmpeg -i 'input.mov' -ss 0.0 -t 0.36 -vcodec v210 -y 'output[0-8].mov'
/usr/local/bin/ffmpeg -i 'input.mov' -ss 0.36 -t 0.36 -vcodec v210 -y 'output[9-17].mov'
/usr/local/bin/ffmpeg -i 'input.mov' -ss 0.72 -t 0.36 -vcodec v210 -y 'output[18-26].mov'
/usr/local/bin/ffmpeg -i 'input.mov' -ss 1.08 -t 0.36 -vcodec v210 -y 'output[27-35].mov'
etc

The start time is defined as: start_frame/framerate, so in this case 0/25, 9/25 18/25, etc... and the duration (t) is chunk_size/framerate, ie 9/25. (all calculations done as float).

The input clip here is h264, output uncompressed v210.

Some of the resulting sections are the right length, but some are one frame shorter, which produces jumps when concatenating them.

Below is the terminal output from one of the inaccurate length clips.

Is there a better way of being more accurate with the duration or is this a limitation inherent in ffmpeg?


Many thanks

Chris




FFmpeg version git-916dee9, Copyright (c) 2000-2011 the FFmpeg developers
  built on Feb 14 2011 12:37:03 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
  configuration:
  libavutil    50. 37. 0 / 50. 37. 0
  libavcore     0. 16. 1 /  0. 16. 1
  libavcodec   52.112. 1 / 52.112. 1
  libavformat  52. 99. 1 / 52. 99. 1
  libavdevice  52.  2. 3 / 52.  2. 3
  libavfilter   1. 75. 0 /  1. 75. 0
  libswscale    0. 12. 0 /  0. 12. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10100b000] Could not find codec parameters (Data: tmcd / 0x64636D74, 0 kb/s)

Seems stream 0 codec frame rate differs from container frame rate: 5000.00 (5000/1) -> 25.00 (25/1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/mpc/lot1/DataLab/docs/software/test_material/QT/FRAME_NO_h264.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2012-05-29 11:04:48
  Duration: 00:00:04.00, start: 0.000000, bitrate: 449 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 1920x1080, 438 kb/s, 25 fps, 25 tbr, 2500 tbn, 5k tbc
    Metadata:
      creation_time   : 2012-05-29 11:04:48
    Stream #0.1(eng): Data: tmcd / 0x64636D74, 0 kb/s
    Metadata:
      creation_time   : 2012-05-29 11:04:56
[buffer @ 0x100c03ea0] w:1920 h:1080 pixfmt:yuv420p
[ffsink @ 0x100c040e0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x100c04310] w:1920 h:1080 fmt:yuv420p -> w:1920 h:1080 fmt:yuv422p16le flags:0xa0000004
[v210 @ 0x101023e00] bits per raw sample: 0 != 10-bit
Output #0, mov, to '/mpc/lot1/DataLab/docs/software/test_material/QT/05-29_000_SZ[9-17].mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2012-05-29 11:04:48
    encoder         : Lavf52.99.1
    Stream #0.0(eng): Video: v210, yuv422p16le, 1920x1080, q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 2012-05-29 11:04:48
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
[buffer @ 0x100c03ea0] Buffering several frames is not supported. Please consume all available frames before adding a new one.
frame=    2 fps=  0 q=0.0 size=   10800kB time=0.08 bitrate=1105923.6kbits/s
frame=    6 fps=  5 q=0.0 size=   32400kB time=0.24 bitrate=1105921.2kbits/s
    Last message repeated 8 times
frame=    8 fps=  4 q=0.0 Lsize=   43201kB time=0.32 bitrate=1105937.6kbits/s
video:43200kB audio:0kB global headers:0kB muxing overhead 0.001596%


More information about the ffmpeg-user mailing list