imagens de tubo ffmpeg extraídas de vídeo

8

Posso usar o seguinte comando para extrair imagens de um vídeo usando ffmpeg, salvando-as no sistema de arquivos:

... | ffmpeg -i - -f image2 'img-%03d.png'

Gostaria de canalizar essas imagens para outro aplicativo, em vez de salvá-las no sistema de arquivos - como elas são separadas no canal é de pouca importância, pois será um script do NodeJS que eu me controle.

O seguinte não funciona:

... | ffmpeg -i - -f image2 pipe: | ...

Erro com

[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument

Existe alguma maneira de canalizar as imagens extraídas de um vídeo usando o ffmpeg, sem usar o sistema de arquivos?

Birjolaxew
fonte
Tente-f png - | ...
Gyan
@Mulvya Isso resulta em erro com [NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument.
precisa saber é o seguinte
2
Tente -f image2pipe -vcodec png - | .... PNG pode não funcionar, se o resultado for MJPEG após a remoção do vcodec.
Gyan
@Mulvya Isso realmente funcionou. Muito obrigado :) #
2200 Birjolaxew

Respostas:

7

sim existe!

inclua o argumento -f image2pipee especifique o nome do arquivo de saída como um único hífen ( -neste contexto significa stdout) e especifique o nome do arquivo de entrada também como um único hífen ( -i -neste contexto significa stdin) e especifique explicitamente o formato de saída (por exemplo, para png : -c:v png), aqui está um exemplo completo:

ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -
hanshenrik
fonte