Split video into equal duration segments I am currently using ffmpeg to split videos into 10 seconds segments. I have taken two approaches but neither seems to yield the desired results. Approach number one is using basic cutting with the -t and -ss options to get the segments. This gives close to accurate segments but  it has some issues with the frames in the ending of some videos. The second option is using segment: great and fast but it gives segments of not equal duration. Any idea how to get segments of the same duration and no issues in the frames? In other words if I play them in a list it should play smoothly

General way

ffmpeg – i input.mp4  -ss &lt;start&gt; -t &lt;duration&gt; -vcodec copy -acodec copy output%03d.mp4


Using segment

ffmpeg -i input.mp4 -c copy -map 0 -segment_time 8 -f segment output%03d.mp4
The issue with the frames are very likely the results of using h264 and not re-encoding the video. h264 usually doesn't have single frames (unless encoded with an intra profile) but groups of frames (GOPs), ffmpeg will cut at a keyframe position ie. at the end or beginning of a GOP. Or not in the case of your first approach, giving you issues with the affected GOPs.

The issue should be resolved by re-encoding (-vcodec libx264 -preset slow) or if that also yields errors transcode to a lossless codec like jpeg2000 (-vcodec libopenjpeg) cut your video and then encode into h264 again (or any other codec you may prefer).