Best way I have found to split a mp4 video on linux is to use

avconv -ss {start time in seconds} -i {source mp4} -t {duration in seconds}  -vcodec copy -acodec copy -metadata track="{track number}" "{output mp4}" 

where
{start time in seconds} is the time from the beginning of the video in seconds to set the start marker of clip eg 0 for the video beginning

{duration in seconds} is the duration from the marker start to set the end marker of clip eg 200 for 200 seconds from the beginning of the video

{source mp4} is the path to the source mp4 video eg source.mp4

{track number} is the integer current track number eg 1,2,3 etc

{output mp4} is the path to the output mp4 split video eg part-1.mp4

Easy to adapt for a shell script or as I use a php wrapper script.

Can use ffmpeg instead but I don’t find the video quality very good.