Windows 运行 ffmpeg 批量脚本的时候,如何在不中断的情况下限制 CPU 使用率

2022-10-13 23:44:56 +08:00
 1054850490
因为转码的机器也是我正在使用的机器,所以运行的时候是会影响到我日常使用的,但是 ffmpeg 也没法停下来,虽然也可以用续传方法继续上次没完成的进程,奈何我的代码渣,这脚本也是我找别人写的,所以我就想着,能不能在我用的时候限制一下 ffmpeg 的占用?然后等我要睡觉的时候就放开禁用,这中途不能中断,虽然 Windows 任务管理器可以设置限制 CPU 使用核心数,但是“重点”来了,这是个批量脚本,每次轮到下一个视频的时候,任务管理器就会重置刚才的核心数限制,所以想问有没有办法让他设置的限制可以一直保持着就算新进程建立,也会维持之前对这个“程序”的限制
3696 次点击
所在节点    PowerShell
40 条回复
cheng6563
2022-10-14 09:14:00 +08:00
process lasso pro
zictos
2022-10-14 09:21:26 +08:00
cmd 命令就可以限制了,有些比较占 cpu 的软件我都是当软件切换到后台就限制只使用 cpu 的一个核心,切换到前台就使用所有核心
Ljcbaby
2022-10-14 10:43:46 +08:00
@tqyq88 #20 如果有一定的质量要求,建议还是 CPU 而非 cuda ,当然拿 cuda 做解码输入还是可以的
dog82
2022-10-14 10:54:11 +08:00
可以考虑用虚拟机解决
dog82
2022-10-14 10:57:44 +08:00
或者让 ffmpeg 跑在 docker 里
lookStupiToForce
2022-10-14 11:22:21 +08:00
ch2
2022-10-14 12:20:27 +08:00
mxT52CRuqR6o5
2022-10-14 12:30:56 +08:00
用 start 命令启动 ffmpeg 时设置低优先级,全设置低优先级就行了,你不用电脑的时候没有其他程序抢占资源就能跑满了
mxT52CRuqR6o5
2022-10-14 12:31:34 +08:00
start /low /wait
cnbatch
2022-10-14 16:55:24 +08:00
@julyclyde 其实就是其他 shell 的 & 符号,在 Powershell 里面功能一样
1054850490
2022-10-14 17:29:02 +08:00
@tqyq88 #20
@Ljcbaby #23
其实就是用来做解码用途的,只是偶尔会遇到 av1 文件就会自动调用 CPU 解码,这就实在没办法了,会把我 CPU 吃满导致我日常也很难使用电脑,只能是等到 30 系显卡价格下来了再买个 30 系来解 av1
1054850490
2022-10-14 17:35:00 +08:00
@wevsty #8
@ysc3839 #17
8 楼的方法是可以,只是有一个问题,这个循环是轮询的,也就是说 ffmpeg 刚启动的时候会有很短的时间内是没有限制核心数的,如果我正在打 LOL 的话就会突然卡一下,因为这时候会有一个峰值然后才降低,所以也并不太适用
1054850490
2022-10-14 17:36:36 +08:00
@wangyuyang3 #9
@dog82 #24
虚拟机不太适合我,因为中间的损耗比较高,而且开启虚拟机硬件资源占用也更大了
ysc3839
2022-10-14 17:57:34 +08:00
@1054850490 所以说正确的做法是用 Job Object ,把进程加入 Job Object 后子进程都会在 Job Object 内,都会受到限制.
https://github.com/goldshtn/jobrun 可以看看这个项目,不过似乎没有提供编译好的文件。
wangyuyang3
2022-10-14 18:03:34 +08:00
@1054850490 不是让你用虚拟机 hhh ,我是说 Process Lasso 可以实现和任务管理器类似的进程关联 CPU 调度设置,而且进程重启会一直记住这个规则,不用重新反复设置。
jeeyong
2022-10-14 18:56:41 +08:00
直接设置 cpu 相关性不行吗?
julyclyde
2022-10-14 20:14:05 +08:00
@cnbatch &符号既不是也不是这个用途啊
hxy100
2022-10-15 03:07:49 +08:00
Windows 下有个开源的工具叫“Battle Encoder Shirase”(简称 BES ),支持监视尚未运行的进程、监视已经运行结束退出进程,支持以指定限制率运行指定进程,有 GUI 版本,同时也支持命令行调用,完全满足你的需求。

---
官网: https://mion.yosei.fi/BES/

---


mscsky
2022-10-15 22:21:00 +08:00
windows 上的 git 不是带 bash 环境?
hxy100
2022-10-16 20:08:00 +08:00
@mscsky 并不是所有的 Linux 软件在不修改源代码的前提下都能无缝移植到 Windows 上,一楼所提的那个 cpulimit 就不行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/886777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX