2

I have input.mp4 of length 30 minutes.

I want to cut it at roughly 24:35, as losssless as possible, as fast as possible.

So, the first output is from 0 inclusive to 24:35 exclusive. The second output is from 24:35 inclusive to 30:00 exclusive.

I'm totally fine if the keyframe is at 24:30 or 24:40, as long as the merged video has no dropped frames and no duplicated frames.

I crafted this command lines.

ffmpeg -y -ss 0 -to 24:35 -i input.mp4 -c copy input-1.mp4
ffmpeg -y -ss 24:35       -i input.mp4 -c copy input-2.mp4

However, I'm not fond of it because I have to specify 24:35 twice. If I have more splitting points, the command lines will be lengthy and repetitive.

Also, I'm concerned about the length difference between the original video and the merged video.

$ ffprobe -i input.mp4 2>&1 | grep "Duration"
Duration: 00:29:40.18, start: 0.000000, bitrate: 10598 kb/s
$ ffprobe -i merge.mp4 2>&1 | grep "Duration"
Duration: 00:29:40.26, start: 0.000000, bitrate: 10603 kb/s

I know time seeking is inaccurate without re-encoding, but is the inaccuracy deterministic for -to and -ss?

1
  • 1
    try ffmpeg -i input.mp4 -c copy -f segment -segment_times 24:31 -reset_timestamps 1 input-%d.mp4 Commented Jul 18 at 1:58

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.