如何将ffmpeg的输出传递给ffplay?


22

如何将ffmpeg的输出传递给ffplay?

目前,我在bash中使用了一种解决方法:

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

Answers:


18

我不知道是ffmpeg不是无法将其数据输出到stdout,还是ffplay无法从stdin中获取其输入。

如果是ffmpeg这样,则无法将其数据输出到stdout:

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

(您需要向migth添加一个-参数,ffplay以便它从stdin中获取其输入。)

如果是ffplay这样,则无法从标准输入中获取其输入:

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

有关<(command)>(command)构造的更多信息,请参见bash手册的“ 过程替换”部分。


4
对我来说,如果不使用“ -f”显式指定输出格式,则无法使用。如在ffmpeg.org/ffmpeg.html上指定的:“通常会自动检测输入文件的格式,并从输出文件的文件扩展名中猜测”。在给定的答案ffmpeg将无法猜测输出格式。所以我认为ffmpeg应该添加“ -f fmt”。
Pavel K.15年

1
ffmpeg 2.8.6确实支持标准输入,如其他答案中所述。您可以检查与支持:stackoverflow.com/questions/12999674/...
西罗桑蒂利新疆改造中心法轮功六四事件

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

将工作; 您需要为输出设置容器格式。通常使用ffmpeg进行设置,查看输出的扩展名,但是在这里您必须使用手动进行设置-f。我建议使用Matroska(MKV),因为它几乎可以包含任何视频,因此无论您将其进行代码转换,其效果都很好。

请注意,如果您使用的是Ubuntu 12.04,则ffmpeg已由libav fork代替,而应使用avconvand avplay代替;语法相同。那里有一个ffmpeg,但由于设计而受到严重影响。


Win10:与pipe:: Invalid data found when processing inputKPower Shell 一样发生错误,但在命令提示符下效果很好
John

11

ffmpeg支持管道操作。请参阅此处的文档部分。

我不知道ffplay的工作原理,但是要将ffmpeg的输出通过管道传输到标准输出,可以将pipe命令添加到ffmpeg命令的末尾。例:

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

1
谢谢,我以某种方式错过了手册页的这一部分。.但是我无法使这种构造正常工作,需要从ffmpeg中删除输出文件名,并将输入管道添加到ffplay args中。我将相应地编辑您的帖子
。.– wim 2011年

谢谢。正如我所说,我以前从未使用过ffplay,但我知道ffmpeg。
matzahboy

在我的应用程序中man ffplay,我看不到ffplay支持该-i开关-可能ffmpeg仅仅是?
sdaau,

1
pipe:1--适用于ffmpeg 2.8.6。
Ciro Santilli新疆改造中心法轮功六四事件

9

看起来正常的管道工作(至少在Windows中):

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

尚未尝试使用更复杂的输入/输出...

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

启动稍微快一点


5
我正在获取Unable to find a suitable output format for 'pipe:'-我需要使用指定编解码器-f
i336_

John

如果图像质量较低,则请确保您最初捕获的图像质量较高(首先将其保存到文件等),它应该“是”正常质量……
rogerdpack
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.