>> Tecnologia Eletrônica >  >> Câmeras >> Câmeras de Vídeo

Como posso usar o FFMPEG para capturar uma captura de tela do arquivo de vídeo?

O FFMPEG oferece várias maneiras de capturar capturas de tela de um arquivo de vídeo. Aqui estão os métodos mais comuns e versáteis:

Método 1:usando `-vf` (filtro de vídeo)` escala` e `select`

Esse método é altamente flexível, permitindo especificar o registro de data e hora, o tamanho da saída e até selecionar quadros específicos com base em critérios.

`` `BASH
ffmpeg -i input.mp4 -vf "select ='eq (n, 10)', escala =640:-1" -Frames:v 1 saída.png
`` `

* `-i input.mp4`:especifica o arquivo de vídeo de entrada. Substitua `input.mp4` pelo nome do seu arquivo de vídeo.
* `-vf" select ='Eq (n, 10)', escala =640:-1 "`:esta é a cadeia de filtros de vídeo.
* `select ='Eq (n, 10)'`:seleciona o 11º quadro (n começa em 0). Altere `10 'para selecionar um quadro diferente. Você pode usar expressões mais complexas aqui, por exemplo, `select ='GTE (t, 10)'` seleciona quadros a partir de 10 segundos.
* `escala =640:-1`:redimensiona o quadro para 640 pixels de largura, mantendo a proporção de aspecto. O `-1` calcula automaticamente a altura. Você pode especificar a largura e a altura, se necessário (por exemplo, `escala =640:480`).
* `-Frames:v 1`:diz ao FFMPEG para produzir apenas um quadro.
* `output.png`:especifica o arquivo PNG de saída. Você pode usar outros formatos de imagem como JPEG (`output.jpg`).


Método 2:usando `-vf` (filtro de vídeo)` miniatura

Este método é mais simples para pegar uma única miniatura em um horário ou porcentagem específica da duração do vídeo.

`` `BASH
ffmpeg -i input.mp4 -vf miniatura -Frames:v 1 saída.png
`` `

Isso pegará uma miniatura a partir do meio do vídeo. Para especificar um tempo preciso:

`` `BASH
ffmpeg -i input.mp4 -vf "miniatura, setpts =pts -startpts" -ss 10 -Frames:v 1 saída.png
`` `
* `-Ss 10`:busca 10 segundos no vídeo * antes de * capturar a miniatura. Isso geralmente é mais eficiente do que usar `select` para um tempo específico.

Método 3:usando `-vf` (filtro de vídeo) e` fps` para várias capturas de tela

Para capturar várias capturas de tela em intervalos regulares:


`` `BASH
ffmpeg -i input.mp4 -vf fps =1/5 saída%03d.png
`` `

Isso criará capturas de tela a cada 5 segundos (1 quadro por segundo ou 1/5 fps), numeradas `output001.png`,` output002.png` e assim por diante.


Considerações importantes:

* `-ss` posicionamento: A colocação `-ss` * antes *` -i` executará uma busca mais rápida (procura no arquivo de entrada). Colocá-lo após `-i` decodificará o vídeo inteiro até o ponto de busca e é mais lento, mas pode ser mais preciso para alguns formatos de vídeo.
* Taxa de quadros: O número do quadro real pode não corresponder perfeitamente ao código de tempo devido a variações nas taxas de quadros de vídeo.
* Formatos de arquivo: Você pode alterar a extensão do arquivo de saída para `.jpg`,` .jpeg`, `.bmp`, etc., para usar diferentes formatos de imagem.


Lembre -se de substituir `input.mp4` e` output.png` pelos nomes de arquivos reais. Escolha o método que melhor se adapte às suas necessidades e ajuste os parâmetros de acordo. O primeiro método oferece mais controle, enquanto os outros são mais rápidos para tarefas mais simples.