Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I try to split a video with FFmpeg and the -segment_times option like it's shown in this FFmpeg ticket. But it's not working, the error output isn't helpful and the resulting output is a single zero-sized video.

segment_times times

Specify a list of split points. times contains a list of comma separated duration specifications, in increasing order. See also the ‘segment_time’ option.

Please note, that I intentionally didn't use the -ss and -t option for reasons to long to explain.

My command

ffmpeg -i input.mp4 -f segment -segment_times 10,20 -vcodec copy output02%d.mp4


ffmpeg version N-59275-g9b195dd Copyright (c) 2000-2013 the FFmpeg developers
  built on Dec 21 2013 22:01:05 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo
ra --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 58.101 / 52. 58.101
  libavcodec     55. 45.103 / 55. 45.103
  libavformat    55. 22.100 / 55. 22.100
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     4.  0.100 /  4.  0.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-12-16 21:59:06
  Duration: 00:01:53.06, start: 0.000000, bitrate: 1467 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1272 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc (default)
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 192 kb/s (default)
      creation_time   : 2013-12-16 21:59:06
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Output #0, segment, to 'output02%d.mp4':
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
Output file #0 does not contain any stream
  • Example video @ HD 720p only for testing.
    But it's not working with 2 other and completely different videos too
  • Newest FFmpeg Windows version (git-9b195dd, 2013-12-22, static, 32-bit)

What am I doing wrong?

share|improve this question

1 Answer 1

up vote 3 down vote accepted

You need to tell ffmpeg to copy all output streams with the -c copy option, and additionally map everything from input to the output with -map 0. This is mentioned in all examples of the segment muxer.

ffmpeg -i input.mp4 -f segment -segment_times 10,20 -c copy -map 0 output02%d.mp4

Don't ask me why it's necessary. I would say it'd make sense to map all streams automatically. Perhaps one could submit a ticket for that if there isn't anything obvious I'm missing.

share|improve this answer
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument – Mr.Hyde Jul 26 at 9:50
@Mr.Hyde Please ask a new question about that and include the full, uncut command line output. – slhck Jul 28 at 7:00
Outputs durations is not same as each other! some of them are for example 3.65 second and the others are 4.05 .How to get same duration in all segments?! – Mr.Hyde Aug 23 at 11:41
@Mr.Hyde That's probably caused by the original video containing keyframes at irregular intervals. When you're using -c copy, ffmpeg can only split the video at keyframes, because the bitstream isn't touched. If you re-encode (i.e., choose any encoder with -c:v), then you should get regular segment times, provided that your chosen keyframe interval is at least as long as the segments you want. – slhck Aug 23 at 14:14

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.