需要解释ffmpeg和pipes命令的详细信息

时间:2011-12-06 01:35:22

标签: shell ffmpeg pipe

FFmpeg FAQ获得以下信息:

mkfifo intermediate1.mpg
mkfifo intermediate2.mpg
ffmpeg -i input1.avi -sameq -y intermediate1.mpg < /dev/null &
ffmpeg -i input2.avi -sameq -y intermediate2.mpg < /dev/null &
cat intermediate1.mpg intermediate2.mpg |\
ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec libmp3lame output.avi

在我使用或修改它之前,我想完全理解它。

< /dev/null &做了什么?

我理解|是管道,但为什么| \?

ffmpeg之后的-f mpeg是什么(似乎,它告诉ffmpeg接受来自猫的输出中的管道(?))

1 个答案:

答案 0 :(得分:1)

<强>&LT; / dev / null&amp;

这实际上是两部分:

  1. &LT;的/ dev / null的
  2. &安培;
  3. 1(< /dev/null)只是将没有输入/ EOF传递给程序的简单方法。我不确定它是否需要,但可能是因为你使用的是命名管道。

    2(&)只需将命令推送到后台并允许您执行其他操作。这是必要的,否则,ffmpeg只会坐在那里等待命名管道的另一端“打开”。

    管道后

    反斜杠

    管道后面的反斜杠只是允许您在多行上输入long命令。如果要将其写在一行上,则应省略反斜杠。在您输入第一行(以反斜杠结尾)后,您会注意到提示从常规[user@machine directory]$(或其他)更改为>之类的内容。这表示您的命令正在从较早的行继续。

    ffmpeg -f switch

    man page for ffmpeg表示-f开关允许您强制使用文件格式。在example in the FAQ中,您希望强制输入格式(读取:告诉ffmpeg预期的输入格式),因为您使用管道位作为输入。通常,它会尝试根据文件扩展名和/或“文件魔法”来猜测输入格式。