Respostas:
Não sei se é ffmpeg
que não é possível enviar seus dados para stdout ou ffplay
que não é possível receber sua entrada de stdin.
Se for ffmpeg
que não pode enviar seus dados para stdout:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Você deve adicionar um -
argumento para ffplay
que ele receba sua entrada de stdin.)
Se for ffplay
que não pode receber sua entrada do stdin:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Para obter mais informações sobre <(command)
e >(command)
construção, consulte a seção Substituição de processo do manual do bash.
ffmpeg -i input.avi <options> -f matroska - | ffplay -
vai funcionar; você precisa definir um formato de contêiner para a saída. Isso normalmente é definido com o ffmpeg olhando para a extensão que você fornece, mas aqui você deve configurá-lo manualmente -f
. Eu recomendo o matroska (MKV) porque ele pode conter quase qualquer vídeo; portanto, o que quer que você esteja transcodificando deve funcionar perfeitamente.
Observe que se você estiver usando o Ubuntu 12.04, o ffmpeg foi substituído pelo fork do libav, e você deve usá avconv
-lo avplay
; a sintaxe é idêntica. Existe um tipo de ffmpeg lá, mas é prejudicado pelo design.
pipe:: Invalid data found when processing inputK
no Power Shell, mas funciona bem no prompt de comando
O ffmpeg suporta operações de tubulação. Veja essa seção da documentação aqui .
Não sei como o ffplay funciona, mas para canalizar a saída do ffmpeg para a saída padrão, você pode adicionar o comando pipe ao final do comando ffmpeg. Exemplo:
ffmpeg -i input.flv pipe:1 | ffplay -i -
man ffplay
, não consigo ver o ffplay
suporte ao -i
switch - talvez seja ffmpeg
apenas?
pipe:1
vs -
? -
funciona no ffmpeg 2.8.6.
parece que os tubos normais funcionam (pelo menos no Windows):
ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -
ainda não tentei com entradas / saídas mais complicadas ...
ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -
é inicialização um pouco mais rápida
Unable to find a suitable output format for 'pipe:'
- eu precisava especificar um codec com -f
.