[FFmpeg-user] Copying sections of an mp4 by time stamp
list+ffmpeg-user at jdlh.com
Thu Aug 27 07:53:08 EEST 2020
On 2020-08-26 19:50, James Sundquist wrote:
> I'm looking to copy sections of example.mp4
> Ideally this would be by time stamp. Perhaps the time stamps are noted in
> a text file.
> Example as minutes:second
> 0:20 - 0:40 as a an mp4 with title "Exercise 1"
> 0:40 - 0:59 as an mp4 with title "Exercise 2"
> 0:20 - 0:59 as an mp4 with title "Primary Exercises"
Hello, James. Fortunately, this is pretty easy to do. Have you read the
FFmpeg documentation yet?
Look up the main command line options `-ss` and `-to` . If your input
file is `example.mp4`, then the commands will be like:
ffmpeg -i example.mp4 -ss 0:20 -to 0:40 exercise_1.mp4
ffmpeg -i example.mp4 -ss 0:40 -to 0:59 exercise_2.mp4
ffmpeg -i example.mp4 -ss 0:20 -to 0:59 primary_exercises.mp4
Note that `-i example.mp4` says that `example.mp4` is the input video.
The extension `.mp4` tells FFmpeg that the file is MP4 format. `-ss
0:20` means, "discard the input video until 0 minutes, 20 seconds in,
then start copying to the output video from there. `-to 0:40` means stop
copying to the output video when the input video is 0 minutes, 40
seconds in. There is documentation on this time duration syntax.
I do not know of a convenient way to do all these cuts in one invocation
of FFmpeg. There may be a way I don't know about. When I had to solve a
similar problem, I invoked FFmpeg once for each cut. I suggest you use
a spreadsheet to generate this command invocation from your list of
start time durations, end time durations, and output file names. Then
paste the command invocations from the spreadsheet into the command
line. The command line will run them one after the other.
When you say "time stamps", I assume you mean the elapsed time from the
start of the input video to your desired moment in the video. The
documentation calls them "time durations", and means something else by
Does this work for you?
—Jim DeLaHunt, software engineer, Vancouver, Canada
More information about the ffmpeg-user