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.