Comando do PowerShell para o ffmpeg processar itens em uma pasta recursivamente

1

Estou tentando descobrir qual comando do PowerShell [ou script, se necessário] permitir que ffmpeg atravesse recursivamente um diretório, obtenha fotos por meio do sinal -vf e coloque todas as fotos em uma pasta sem qualquer nome de arquivo conflitos que causariam sobrescrever.

Então, sei que isso funciona bem para um arquivo individual:

ffmpeg -i input.mov -vf fps=10/60 still%04d.jpg

Os arquivos gerados começam em still0001.jpg e contam até still0002.jpg , still0003.jpg , etc.

Eu tenho um diretório parecido com arquivos de vídeo em diferentes níveis:

  • %código%
    • %código%
      • topFolder1
      • midFolder1
    • %código%
      • video1.mov
      • video2.mov

Estou tentando usar um comando do PowerShell que pode tirar fotos de todos os vídeos midFolder2 , video3.mov , video4.mov e video1.mov e soltá-los em uma única pasta.

Encontrei um comando do PowerShell que é usado ter o ffmpeg percorrendo um diretório recursivamente , mas quando tento adaptá-lo, não está funcionando.

Eu corro:

PS T:\Exports - Dailies\stills test> for /F "tokens=*" "%G" IN ('dir "T:\Exports - Dailies" *.mov') do ffmpeg -i "%G" -vf fps=10/60 still%05d.jpg

Mas recebo este erro:

At line:1 char:4
+ for /F "tokens=*" "%G" IN ('dir "T:\Exports - Dailies" *.mov') do f...
+    ~
Missing opening '(' after keyword 'for'.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword

Onde estou indo errado?

    
por user260467 11.06.2018 / 17:56

1 resposta

1

Aqui está um exemplo de um comando powershell para converter todos os arquivos em um diretório para mp4 e redimensionar para 1280x720:

dir *.* | foreach-object { $newname = $_.Name.Remove($_.Name.Length - $_.Extension.Length) + ".mp4"; .\ffmpeg.exe -i "$_" -s 1280x720 $newname }
    
por 22.07.2018 / 11:40