An unorthodox, but simple and effective way of accurately extracting a section of video from a larger video file, using MPV screen-shots (with specific file naming scheme) for 'in' and 'out' points.
Bash commands below serve only to demonstrate the general idea. No error handling whatsoever.
#!/bin/bash # Extract section of video using time-codes taken from MPV screen-shots # Requires specific MPV screen-shot naming scheme: screenshot-template="%f__%P" # N.B. Skeleton script demonstrating basic operation filename="$(ls -1 *.jpg | head -1)" startTime="$(cut -d. -f-2 <<< "${filename#*__}")" filename="${filename%__*}" endTime="$(cut -d_ -f3 <<<"$(ls -1 *.jpg | tail -1)" | cut -d. -f-2)" ffmpeg \ -i "$filename" \ -ss "$startTime" \ -to "$endTime" \ "EDIT__${filename}__${startTime}-${endTime}.${filename#*.}"Another approach to this (and perhaps more sensible) is to script it all through MPV itself. However, that ties the technique down to MPV, whereas, this 'screen-shot' idea allows it to be used with other media players offering timestamps in the filename. Also, it's a little more tangible: you can create a series of screen-shots and later decide which ones are timed better.
video shown in demo: “The Magic of Ballet With Alan and Monica Loughman" DVD (2005)
UPDATE: September 11, 2018
I recently happened upon a MPV lua script created for practical video extraction.
'mpv-webm: Simple WebM maker for mpv, with no external dependencies.' https://github.com/ekisu/mpv-webm Create video clip at selected start/end points, as well as crop coordinates if required. Encoder options, and ability to Preview before output.
— oioiiooixiii (@oioiiooixiii) September 11, 2018
It really works well, and I now find myself using it every time I need to clip a section of video.
link: https://github.com/ekisu/mpv-webm