我想使用两台电脑使用 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
。在这种情况下,您只需要两个文件。