Does anyone know of software (preferably free) which can be used to divide up a video or audio file into a number of smaller sized pieces at regular intervals? (e.g. to turn a 3-hour video file into nine 20-minute video files)?
FFmpeg's segment muxer is designed for this.
ffmpeg -i in.mp4 -c copy -f segment -segment_time 1200 -reset_timestamps 1 in%d.mp4
Output files will be
Since the video keyframes in the source file may not be present exactly at the start of each 20 minute interval, the output segments won't be exactly 20 minutes each. Expect a deviation of a few seconds.