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

Shell 需要解释ffmpeg和pipes命令的详细信息吗,shell,ffmpeg,pipe,Shell,Ffmpeg,Pipe,获得以下信息: mkfifo intermediate1.mpg mkfifointermediate2.mpg ffmpeg-i input1.avi-sameq-y intermediate1.mpg

获得以下信息:

mkfifo intermediate1.mpg
mkfifointermediate2.mpg
ffmpeg-i input1.avi-sameq-y intermediate1.mpg
在我使用或修改它之前,我想完全理解它

的作用是什么

我知道“是管道,但为什么?”


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

这实际上是两个部分:

  • &
  • 1(
    )只是一种不向程序传递输入/EOF的简单方法。我不确定是否需要它,但可能是因为您正在使用命名管道

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

    管道后的反斜杠

    管道后面的反斜杠仅用于在多行上输入long命令。如果你想把它写在一行上,你应该省略反斜杠。您会注意到提示与通常的
    [user@machine在输入第一行(以反斜杠结尾)后,将目录]$
    (或任何内容)更改为类似于
    。这表示您的命令从前一行继续执行

    ffmpeg-f交换机

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

    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