Search videos for matching words or phrases, and generate a cut-down version
in the ~/videogrep_output/ directory, containing only the matching dialogue.
For example, keep only the bits of a video where people say "banana".
bash- it's a bash scriptegrep- for finding matches in the subtitlesffprobefor getting video information like dimensions, aspect ratio (in FFMPEG package)bc- for calculating accurate video frame ratesmencoder- for creating the generated videomplayer- for playing the generated video
- Put the videos you want to search, and their subtitle files, in a directory together.
- The source videos must have accompanying subtitles files, in either
.srtor.subformat! - The subtitle file names must also match the videos to which they refer.
- Here's a valid example (
videogrepwill find the subtitles OK):
./some_vids/my-cool-video-1080p.mp4
./some_vids/my-cool-video-1080p.srt
NOTE: Many YouTube videos have subtitles. You can download YouTube videos and their subtitles using various websites.
Copy videogrep.sh to a folder in your $PATH.
You must give:
- the input video (must have a matching subtitle file)
- the search term (can be an
egrepregex likeone|two|every.*|a whole phrase
videogrep.sh <video-file> <search-term> [padding-start] [padding-end]Example:
videogrep.sh 'my_videos/owen-jones-meets-jeremy-corbyn-again.mp4' 'parliamentary' 50 85Note: padding-start and padding-end are in milliseconds.
Produces this output:
Video file: owen-jones-meets-jeremy-corbyn-again.mp4
Subtitle file: owen-jones-meets-jeremy-corbyn-again.sub
Search term(s): parliamentary
Speech found:
{8748}{8780}the mind by the parliamentary Labour
{10080}{10134}parliamentary by-elections with
{10619}{10676}throughout the parliamentary party and
{12330}{12381}parliamentary speeches on the budget for
{21950}{22002}firefighting within the parliamentary
{64168}{64202}parliamentary so things will come back
------------------------------------
Creating: /root/videogrep_output/parliamentary__owen-jones-meets-jeremy-corbyn-again.avi
------------------------------------The videogrep.sh script in this repo is based on a shell script from http://activearchives.org/wiki/Videogrep
Improvements I made to the original script:
- auto detect correct frame rate, dimensions and aspect ratio
- support regex searches better
- added ability to add padding around matching dialogue segments (in milliseconds)
- actually build the cut-down video as a new file, don't just play it
I used this random shell script as inspiration because antiboredom/videogrep didn't work for me.
(The ffmpeg supplied by moviepy segfaults, and switching to my local ffmpeg removed all errors, but still didn't produce any output video.)