为什么参数的顺序在这里很重要?

Poo*_*oya 5 shell ffmpeg

据我记得,命令参数的顺序并不重要,但在这里我看到了其他东西:

ffmpeg -f avi -i "s02e01.mkv" vcodec mpeg4 -b 4000k -acodec libmp3lame -ab 320k "converted.avi" 
Run Code Online (Sandbox Code Playgroud)

这是结果:

s02e01.mkv: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

但在更改“-f”和“-i”的位置后,一切正常:

ffmpeg -i "s02e01.mkv" -f avi vcodec mpeg4 -b 4000k -acodec libmp3lame -ab 320k "converted.avi" 
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

Zor*_*war 5

由程序决定如何处理给定的命令行输入。大多数程序并不关心它们的顺序,因为它们在功能上是不同的。但是,如果某些标志可以选择影响其他标志,则最简单的实现方法是通过输入排序。ffmpeg 就是这样的程序之一。它的手册页显示:

作为一般规则,选项将应用于下一个指定的文件。因此,顺序很重要,您可以在命令行上多次使用相同的选项。

gcc 是另一个可以让你陷入困境的程序;它的手册页说:

您可以混合选项和其他参数。在大多数情况下,您使用的顺序并不重要。当您使用多个相同类型的选项时,顺序确实很重要;例如,如果多次指定 -L,则按指定的顺序搜索目录。此外,-l 选项的位置也很重要。