Risposte:
Non so se è ffmpeg
che non può trasmettere i suoi dati a stdout o ffplay
che non può prendere il suo input da stdin.
Se è ffmpeg
che non è in grado di trasmettere i suoi dati a stdout:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(È necessario aggiungere un -
argomento a in ffplay
modo che prenda il suo input da stdin.)
Se è ffplay
che non può prendere il suo input da stdin:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Per maggiori informazioni su <(command)
e il >(command)
costrutto, consultare la sezione Sostituzione del processo del manuale di bash.
ffmpeg -i input.avi <options> -f matroska - | ffplay -
funzionerà; è necessario impostare un formato contenitore per l'output. Questo è normalmente impostato con ffmpeg guardando l'estensione che si dà l'output, ma qui è necessario impostarlo manualmente -f
. Consiglio matroska (MKV) perché può contenere quasi tutti i video, quindi qualunque cosa tu lo stia transcodificando dovrebbe funzionare perfettamente.
Si noti che se si sta utilizzando Ubuntu 12.04, ffmpeg è stata sostituita dalla forcella libav, e si dovrebbe usare avconv
e avplay
invece; la sintassi è altrimenti identica. C'è una specie di ffmpeg lì, ma è paralizzato dal design.
pipe:: Invalid data found when processing inputK
in Power Shell, ma funziona bene nel prompt dei comandi
ffmpeg supporta le operazioni di piping. Vedi quella sezione della documentazione qui .
Non so come funziona ffplay, ma per reindirizzare l'output di ffmpeg all'output standard, è possibile aggiungere il comando pipe alla fine del comando ffmpeg. Esempio:
ffmpeg -i input.flv pipe:1 | ffplay -i -
man ffplay
, non riesco a vedere il ffplay
supporto dello -i
switch - è forse ffmpeg
solo?
pipe:1
vs -
? -
funziona su ffmpeg 2.8.6.
sembra che i normali tubi funzionino (almeno in Windows):
ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -
non l'ho provato con input / output più complicati però ...
ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -
è l'avvio leggermente più veloce
Unable to find a suitable output format for 'pipe:'
- dovevo specificare un codec con -f
.