Comment puis-je diriger la sortie de ffmpeg vers ffplay?


22

Comment puis-je diriger la sortie de ffmpeg vers ffplay?

Pour le moment, j'utilise une solution de contournement dans bash:

mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam

Réponses:


18

Je ne sais pas si c'est ffmpegqui ne peut pas sortir ses données vers stdout, ou ffplayqui ne peut pas prendre son entrée depuis stdin.

Si ce n'est ffmpegpas le cas, il ne peut pas exporter ses données vers stdout:

capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)

(Vous devez migth ajouter un -argument pour ffplayqu'il prenne son entrée de stdin.)

Si c'est le cas ffplayqui ne peut pas prendre son entrée depuis stdin:

ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null

Pour plus d'informations sur la construction <(command)et >(command), consultez la section Substitution de processus du manuel bash.


4
pour moi, cela n'a pas fonctionné sans spécifier explicitement le format de sortie avec "-f". comme spécifié sur ffmpeg.org/ffmpeg.html : "le format est normalement détecté automatiquement pour les fichiers d'entrée et deviné à partir de l'extension de fichier pour les fichiers de sortie". dans une réponse donnée, ffmpeg ne pourra pas deviner le format de sortie. donc je pense que ffmpeg devrait avoir "-f fmt" ajouté.
Pavel K.

1
ffmpeg 2.8.6 prend en charge l'entrée stdin comme mentionné dans d'autres réponses. Vous pouvez vérifier ce soutien avec: stackoverflow.com/questions/12999674/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

17
ffmpeg -i input.avi <options> -f matroska - | ffplay -

marchera; vous devez définir un format de conteneur pour la sortie. Ceci est normalement réglé avec ffmpeg en regardant l'extension avec laquelle vous donnez la sortie, mais ici vous devez la régler manuellement avec -f. Je recommande le matroska (MKV) car il peut contenir presque toutes les vidéos, donc tout ce que vous transcodez devrait parfaitement fonctionner.

Notez que si vous utilisez Ubuntu 12.04, ffmpeg a été remplacé par le fork libav, et vous devriez utiliser avconvet à la avplayplace; la syntaxe est par ailleurs identique. Il existe une sorte de ffmpeg, mais il est paralysé par la conception.


Win10: une erreur se produit comme pipe:: Invalid data found when processing inputKdans Power Shell, mais fonctionne bien dans l'invite de commande
John

11

ffmpeg prend en charge les opérations de tuyauterie. Voir cette section de la documentation ici .

Je ne sais pas comment fonctionne ffplay, mais pour diriger la sortie de ffmpeg vers la sortie standard, vous pouvez ajouter la commande pipe à la fin de la commande ffmpeg. Exemple:

ffmpeg -i input.flv pipe:1 | ffplay -i -

1
merci, j'ai en quelque sorte manqué cette section des pages de manuel .. mais je n'ai pas pu faire fonctionner cette construction, le nom du fichier de sortie doit être supprimé de ffmpeg et le tuyau d'entrée ajouté aux arguments de ffplay. je modifierai votre message en conséquence ..
wim

Merci. Comme je l'ai dit, je n'ai jamais utilisé ffplay auparavant, mais je connais ffmpeg.
matzahboy

Dans mon man ffplay, je ne vois pas ffplaysoutenir le -icommutateur - est-ce peut-être ffmpegseulement?
sdaau

1
pipe:1vs -? -fonctionne sur ffmpeg 2.8.6.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

9

ressemble à des tuyaux normaux (au moins dans les fenêtres):

ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -

je ne l'ai pas essayé avec des entrées / sorties plus compliquées ...

ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -

est un démarrage légèrement plus rapide


5
J'obtenais Unable to find a suitable output format for 'pipe:'- j'avais besoin de spécifier un codec avec -f.
i336_

Fonctionne, mais qualité d'image très faible
John

Si la qualité d'image est faible, assurez-vous que ce que vous capturez initialement est une qualité d'image élevée (enregistrez-le d'abord dans un fichier, etc.), cela "devrait" être de qualité normale ...
rogerdpack
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.