Extraindo quadros de todos os vídeos em um diretório usando o FFmpeg

1

Estou tentando usar o FFmpeg para extrair um quadro por segundo de cada arquivo em um diretório.

Eu uso este comando para arquivos individuais, mas não consigo descobrir como inserir um diretório:

ffmpeg -i "C:\input\clip1.mp4" -vf fps=1 -qscale:v 2 "C:\output\clip1\clip1A"%d.jpg

O ideal é que eu queira que os quadros sejam salvos em sua própria pasta como abaixo, mas eu acho que eu posso trabalhar essa parte sozinha. Tudo bem se todos eles saem para a mesma pasta com o mesmo prefixo e numeração sequencial.

C:\output\clip1\clip1-001.jpg , clip1-002.jpg

C:\output\clip2\clip2-001.jpg , clip2-002.jpg

Estou tentando há muitas horas e ainda estou completamente perdido. Qualquer ajuda seria muito apreciada.

    
por River 05.08.2018 / 15:13

1 resposta

1

Feito isso! Esse código gerará quadros para pastas com o mesmo nome do vídeo de onde vieram. Os quadros serão prefixados pelo nome do vídeo e serão sufixados por números seqüenciais que começam em 001. Então, para os meus arquivos, sai "/clip1/clip1-001.jpg", etc.

Caso você seja como eu e não tenha a menor ideia do que está fazendo, cole o código abaixo no bloco de notas, salve como "extractframesorwhatever.bat" e execute a partir do diretório onde seus clipes estão .

for %%F in (*.mp4) do (
If not Exist "%%~nF" MkDir "%%~nF"
ffmpeg -i %%F -r 1 -qscale:v 2 %%~nF\%%~nF-%%3d.jpg
)

Se você deseja imprimir as pastas em outro lugar, altere:

If not Exist "%%~nF" MkDir "%%~nF"

Para algo assim:

If not Exist "C:\wherever\%%~nF" MkDir "C:\wherever\%%~nF"

Se você fizer isso, também precisará alterar a saída de (no meu exemplo):

%%~nF\%%~nF-%%3d.jpg

para

C:\wherever\%%~nF\%%~nF-%%3d.jpg

Ou se você quiser todos os quadros em uma pasta. Substitua o primeiro %% ~ nF da saída pelo seu diretório preferido. Usando meu exemplo, ele iria de C: \ where \ %% ~ nF \ %% ~ nF - %% 3d.jpg para C: \ where \ frames \ %% ~ nF - %% 3d.jpg. Você também quer editar a segunda linha para apontar para o novo local e impedir que ele crie vários diretórios desnecessários ou remover totalmente a segunda linha. Se você remover a segunda linha, terá que criar essa pasta "frames" primeiro.

EDIT - Pode ser necessário remover todos os espaços dos nomes dos arquivos antes que eles possam ser processados. "Utilitário de renomeação em massa" pode poupar muito tempo.

    
por 05.08.2018 / 18:54