为什么我的 gnu 与 ffmpeg 并行仅在远程主机上执行 ffmpeg?

为什么我的 gnu 与 ffmpeg 并行仅在远程主机上执行 ffmpeg?

我想使用两台电脑使用 ffmpeg,我知道并行可以做到我使用这个 cli

parallel --trc {.}.mkv -S virtual,: 'ffmpeg -y -i {} -vf yadif,crop=720:550:0:12,scale=640:352 -c:v libx264 -c:a aac -b:v 1500k -b:a 128k -metadata language=eng -metadata title="example" -aspect  16:9 {.}.mkv' ::: example.mpg 

它在虚拟机上传输文件 example.mpg(OK),然后仅在远程电脑(虚拟)上运行命令!但是这条线-S virtual,:即使在本地电脑上也不要求并行运行?我的目的是使用 gnu 并行在两台或更多 PC 上分配负载/CPU 使用情况,例如本地 PC 上 50% 的负载,远程上 50% 的负载,可能吗?或者我需要更复杂的东西,比如旧的 openmosix 集群?

答案1

-S virtual,:确实会在本地机器(称为:)和服务器(virtual)上生成 GNU Parallel 生成作业。

在您的示例中,您仅提供一个 mpg 文件作为输入。因此,GNU Parallel 将只运行一项作业。换句话说:GNU Parallel 不会神奇地将单个 mpg 文件分割成多个文件并处理这些文件。

如果您想使用所有核心,您至少应该为 GNU Parallel 提供相同数量的文件作为输入。

答案2

默认情况下,GNU Parallel 将在所有服务器上的每个 CPU 线程上运行一项作业。因此,如果virtual有 4 个线程,则至少需要 5 个文件才能确保一项作业在本地计算机上运行。

您可以使用 更改此设置-j1。在这种情况下,您只需要两个文件。

相关内容