I'm trying to figure out what PowerShell command [or script if necessary] might allow ffmpeg
to recursively traverse a directory, pull stills via the -vf
flag, and put all the stills into a folder without any filename conflicts that would cause overwriting.
So I know that this works fine for an individual file:
ffmpeg -i input.mov -vf fps=10/60 still%04d.jpg
The files generated start from still0001.jpg
and count up to still0002.jpg
, still0003.jpg
, etc.
I have a directory that looks like this, with video files at different levels:
topFolder1
midFolder1
video1.mov
video2.mov
midFolder2
video3.mov
video4.mov
I'm trying to use a PowerShell command that can pull stills from all the videos video1.mov
, video2.mov
, video3.mov
, and video4.mov
and drop them into one folder.
I found a PowerShell command that purports to have ffmpeg traverse a directory recursively, but when I try to adapt it, it's not working.
I run:
PS T:\Exports\1 - Dailies\stills test> for /F "tokens=*" "%G" IN ('dir "T:\Exports\1 - Dailies" *.mov') do ffmpeg -i "%G" -vf fps=10/60 still%05d.jpg
But I get this error:
At line:1 char:4
+ for /F "tokens=*" "%G" IN ('dir "T:\Exports\1 - Dailies" *.mov') do f...
+ ~
Missing opening '(' after keyword 'for'.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword
Where am I going wrong?
Best Answer
Here's an example of a powershell command for converting all files in a directory to mp4 and resizing to 1280x720: