How can I split a .mp4 in two?
I recommend opening the video in a media player to find the time where you want to split it. Then you can use ffmpeg with the following script. It does not re-encode the video.
#!/bin/bash
# Split Video Script
# Usage: script_name file_name split-point
# Example: split_video_script bugs_bunny.mp4 31:23
# Instructions:
# 1. Type the name of your script (if it is already added to ~/bin and marked as executable).
# 2. Type the file name including path to it if necessary.
# 3. Type the time where you want to split the video. It goes in minutes:seconds
# Get length in seconds
length=$(echo "$2" | awk -F: '{print ($1 * 60) + $2}')
# Get filename without extension
fname="${1%.*}"
# First half
ffmpeg -i "${fname}.mp4" -c copy -t "$length" "${fname}1.mp4"
# Second half
ffmpeg -i "${fname}.mp4" -c copy -ss "$length" "${fname}2.mp4"
Update: I recently needed to update this script because of an issue with the second half. So, now I have to process the second half of it. You would add in the parameters that are specific to your original video. You can use mediainfo
, ffprobe
or ffmpeg -i
to find the needed information about your original video.
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 file-name"
exit 1
fi
read -p "Enter time to split video (hh:mm:ss.mmm) " split_time
ext="${1##*.}"
fname="${1%.*}"
# First half
ffmpeg -i "$1" -c copy -t "$split_time" -c:s copy "${fname}1.${ext}"
# Second half
ffmpeg -ss "$split_time" -i "$1" -c:v libx264 -crf 17 -preset veryfast -r 30 -s 1920x1080 -c:a aac -ac 2 -b:a 256k -ar 44100 -pix_fmt yuv420p -movflags faststart -c:s copy "${fname}2.${ext}"
Related videos on Youtube
![Garry Pettet](https://i.stack.imgur.com/9vekw.png?s=256&g=1)
Garry Pettet
I'm a former UK radiologist who now works full time as a web, desktop and iOS developer.
Updated on September 18, 2022Comments
-
Garry Pettet almost 2 years
I have a bunch of .mp4 files (DRM free). Each file comprises two episodes of a kids TV show. I would like to simply split the file in two without re-encoding. What's the best way to do this? Preferably with a GUI (as I need to skip to the correct part of each file to find the divider between the two episodes).
Thanks,
-
usmanayubsh over 8 yearsHave you read the answers to this question? A few of them suggest GUI-based solutions too.
-
Info-Screen over 8 yearsPossible duplicate of Splitting an MP4 file
-
Info-Screen over 8 yearsYou could simply find out the point where to split by watching it in a normal viewer (VLC, etc) and then use the terminal, as most things are command line based in ubuntu
-
jbrock over 8 yearsIf they all split at exactly the same place, then I'd be glad to update the below script so it is a batch operation. That would save a lot of time.
-
-
nbkhope about 3 yearsThe command generates two parts. The first part is fine. But the second video plays with a black screen for the first couple of seconds. Any idea how to fix that problem?
-
jbrock about 3 yearsThank you for bringing this to my attention. I had updated my script recently due to the same issue. I have posted it above. Best of luck.