Respostas:
Não sei se é ffmpegque não é possível enviar seus dados para stdout ou ffplayque não é possível receber sua entrada de stdin.
Se for ffmpegque não pode enviar seus dados para stdout:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Você deve adicionar um -argumento para ffplayque ele receba sua entrada de stdin.)
Se for ffplayque 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 inputKno 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 ffplaysuporte ao -iswitch - talvez seja ffmpegapenas?
pipe:1vs -? -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.