从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接受来自猫的输出中的管道(?))
答案 0 :(得分:1)
<强>&LT; / dev / null&amp;
这实际上是两部分:
1(< /dev/null
)只是将没有输入/ EOF传递给程序的简单方法。我不确定它是否需要,但可能是因为你使用的是命名管道。
2(&
)只需将命令推送到后台并允许您执行其他操作。这是必要的,否则,ffmpeg只会坐在那里等待命名管道的另一端“打开”。
反斜杠
管道后面的反斜杠只是允许您在多行上输入long命令。如果要将其写在一行上,则应省略反斜杠。在您输入第一行(以反斜杠结尾)后,您会注意到提示从常规[user@machine directory]$
(或其他)更改为>
之类的内容。这表示您的命令正在从较早的行继续。
ffmpeg -f switch
man page for ffmpeg表示-f开关允许您强制使用文件格式。在example in the FAQ中,您希望强制输入格式(读取:告诉ffmpeg预期的输入格式),因为您使用管道位作为输入。通常,它会尝试根据文件扩展名和/或“文件魔法”来猜测输入格式。