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

2022-10-13 23:44:56 +08:00
 1054850490
因为转码的机器也是我正在使用的机器,所以运行的时候是会影响到我日常使用的,但是 ffmpeg 也没法停下来,虽然也可以用续传方法继续上次没完成的进程,奈何我的代码渣,这脚本也是我找别人写的,所以我就想着,能不能在我用的时候限制一下 ffmpeg 的占用?然后等我要睡觉的时候就放开禁用,这中途不能中断,虽然 Windows 任务管理器可以设置限制 CPU 使用核心数,但是“重点”来了,这是个批量脚本,每次轮到下一个视频的时候,任务管理器就会重置刚才的核心数限制,所以想问有没有办法让他设置的限制可以一直保持着就算新进程建立,也会维持之前对这个“程序”的限制
3939 次点击
所在节点    PowerShell
40 条回复
soclearn
2022-10-13 23:59:28 +08:00
bash cpulimit
1054850490
2022-10-14 00:17:33 +08:00
@minlearn #1 我这是 Windows 环境,包括脚本运行的环境也是 powershell
xmumiffy
2022-10-14 00:20:31 +08:00
ffmpeg 有参数 threads 没超过总核心数时基本等于用几个核心
1054850490
2022-10-14 00:22:51 +08:00
@xmumiffy #3 是有,但是嘛,它并不灵活,它在运行中就不能更改,我想我睡觉的时候放开限制,而我使用的时候再限制个数
mikewang
2022-10-14 00:50:38 +08:00
start /affinity 1 ffmpeg.exe *************
1054850490
2022-10-14 01:16:03 +08:00
@mikewang #5 好像也不适合我,你这个也是开始就写死的,不能在程序运行的途中进行更改
cxtrinityy
2022-10-14 01:31:53 +08:00
Powershell 也可以安装到 Linux 吧,wsl 走起,用一楼的 cpulimit 方案试试
wevsty
2022-10-14 01:33:45 +08:00
POWERSHELL:

ForEach($PROCESS in GET-PROCESS ffmpeg) { $PROCESS.ProcessorAffinity=1}
wangyuyang3
2022-10-14 01:49:51 +08:00
之前我为了指定 VMware 虚拟机调用的 cpu 内核,用了 process lasso 这款软件,实测可以永久记住规则,即使虚拟机进程结束重开。

你搞个破解版先试试看
wangyuyang3
2022-10-14 01:50:19 +08:00
@wangyuyang3 呸,不是内核,是核心数
wangritian
2022-10-14 02:32:52 +08:00
试试 process lasso
AX5N
2022-10-14 05:18:46 +08:00
切成 N 片,然后再写一个程序判断你当前是否活动,活动的话下一个任务就低负载,不活动下一个任务就高负载,任务完成后再合并。
charlie21
2022-10-14 05:29:06 +08:00
可转码速度也会因此变慢
necomancer
2022-10-14 05:51:23 +08:00
任务管理器找到 ffmpeg 然后设置低优先级?
cnbatch
2022-10-14 06:13:46 +08:00
换个思路,将 ffmpeg 进程的优先级设置到最低,也许这样更简单一些

Get-WmiObject Win32_process -filter 'name = "ffmpeg.exe"' | foreach-object { $_.SetPriority(64) }

加到脚本最后一行
cnbatch
2022-10-14 06:32:37 +08:00
@cnbatch
啊,说得有点不太对了
应该是,用 & 符号加到脚本每句 ffmpeg 命令的后面
ysc3839
2022-10-14 07:32:37 +08:00
正确做法是用 Job Object 限制
https://learn.microsoft.com/en-us/windows/win32/procthread/job-objects#job-limits-and-notifications
不过问题在于可能没有现成的工具,需要自己写代码。
除此之外较好的做法就是设置 CPU 亲和性了,8 楼的方法应该没啥问题。
zcf0508
2022-10-14 07:44:46 +08:00
process lasso pro
julyclyde
2022-10-14 08:29:44 +08:00
@cnbatch &符号??
tqyq88
2022-10-14 08:51:56 +08:00
使用 cuda 加速,实测大概是 CPU 的几倍,参考 https://trac.ffmpeg.org/wiki/HWAccelIntro

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i test.mp4 -b 1000000 -c:v h264_nvenc -preset slow c2.mp4

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

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

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

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

© 2021 V2EX