我想在两台电脑上使用 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
它在虚拟(OK)上传输文件 example.mpg,然后仅在远程 pc(虚拟)上运行该命令!但是这条线-S virtual,
:即使在本地电脑上也不要要求并行运行?我的目的是使用 gnu 并行在两台或多台 pc 上分配负载/cpu 使用,例如 localpc 上 50% 的负载,远程上 50% 的负载,可能吗?或者我需要更复杂的东西,比如旧的好 openmosix 集群?
默认情况下,GNU Parallel 将在所有服务器上的每个 CPU 线程运行一个作业。因此,如果
virtual
有 4 个线程,则至少需要 5 个文件才能确保在本地计算机上运行一项作业。您可以使用 更改此设置
-j1
。在这种情况下,您只需要两个文件。-S virtual,:
确实会在本地机器(称为:
)和服务器(virtual
)上生成 GNU Parallel 生成作业。在您的示例中,您只提供一个 mpg 文件作为输入。因此,鉴于此,GNU Parallel 将只运行一项工作。换句话说:GNU Parallel 不会神奇地将您的单个 mpg 文件拆分为多个文件并处理这些文件。
如果您想使用所有内核,您至少应该给 GNU Parallel 提供与输入相同数量的文件。