AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1721064
Accepted
kontextify
kontextify
Asked: 2022-05-15 21:27:00 +0800 CST2022-05-15 21:27:00 +0800 CST 2022-05-15 21:27:00 +0800 CST

ffmpeg:编码 h264 时限制为单个 CPU 内核

  • 772

我需要在不耗尽我的 CPU(在 Linux 上)的情况下降低后台某些 H.264 视频的帧速率。不知何故-threads 1根本没有效果:

ffmpeg -threads 1 -i 50fps.mp4 -filter:v fps=30 30fps.mp4

流信息:

Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg, progressive)
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D)

所有核心仍然被最大化。我怎样才能将其限制为只有一个核心?H.265 对此 ( pools=none) 有一个特定于编码器的选项,我可以在这里使用类似的东西吗?

video ffmpeg
  • 5 5 个回答
  • 5484 Views

5 个回答

  • Voted
  1. Best Answer
    Gordan Bobić
    2022-05-15T21:54:57+08:002022-05-15T21:54:57+08:00

    你可以这样做taskset:

    taskset -c 0 ffmpeg ...
    

    运行您的 ffmpeg 进程,仅限于第一个 CPU 内核(从 0 开始计数)。或者例如,在第一个和第三个核心上运行它:

    taskset -c 0,2 ffmpeg ...
    
    • 27
  2. Gyan
    2022-05-16T00:52:35+08:002022-05-16T00:52:35+08:00

    视频编码线程由 output 设置-threads。

    所以,

    ffmpeg -i 50fps.mp4 -filter:v fps=30 -threads:v 1 30fps.mp4
    
    • 14
  3. Hannes Landeholm
    2022-05-16T13:17:26+08:002022-05-16T13:17:26+08:00

    是为了防止其他软件因为 ffmpeg 在后台占用 CPU 而无法正常工作吗?

    在这种情况下,我建议以更高的友好度运行它:

    nice -n 19 ffmpeg -i 50fps.mp4 -filter:v fps=30 30fps.mp4
    

    这将允许调度程序最小化 ffmpeg 的优先级并在任何其他进程需要 CPU 时立即抢占它,并且仍然允许您尽可能快地利用所有内核进行编码。

    • 8
  4. Firelord
    2022-05-18T01:01:56+08:002022-05-18T01:01:56+08:00

    如果您使用的是使用 systemd 的 Linux 发行版,那么您可以使用一个名为systemd-run的实用程序来进行资源控制。对于您的情况,将是这样的:

    sudo systemd-run --scope -p AllowedCPUs=VALUE CMD
    sudo systemd-run --scope -p CPUQuota=VALUE% CMD
    

    对于AllowedCPUs,您可以提及要限制命令执行的逻辑核心的索引。第一个逻辑核心的索引为 0,第二个逻辑核心为 1,依此类推。

    对于CPUQuota,100% 等于一个逻辑核心的最大可用 CPU 时间。200% 将是两个逻辑核心,依此类推。

    示例 A:

    # 我的压力命令想要使用我机器的所有 8 个逻辑核心,
    # 但 systemd 会将其限制为允许的逻辑核心 0 和 4。
    # 我选择了 0 和 4,因为它们都属于同一个物理内核。
    
    sudo systemd-run --scope -p AllowedCPUs=0,4 stress -c 8
    

    示例 B:

    # 在这里,我的压力命令尽管对所有 CPU 都很饥渴,但只会
    仅获得一个逻辑核心的 100% *可用* 时间。
    
    sudo systemd-run --scope CPUQuota=100% 压力 -c 8
    

    建议阅读:systemd-run和systemd.resource-control手册。

    • 1
  5. LarryN
    2022-05-18T14:51:49+08:002022-05-18T14:51:49+08:00

    我经常使用 cpulimit 通过每晚 LARGE 压缩备份来限制我机器上的整体负担,例如:

    { sleep 1 ; tar -zcf output.tar.gz /mnt/3TBNumber3C/HUGE_dir ; killall cpulimit ; } & cpulimit -e /bin/gzip -l 30
    

    我想知道 cpulimit 和 taskset 之间有什么区别,我从这个站点收集到cpulimit 是一个节流阀,而 taskset 建立了关联。事实上,如果我起得够晚,我实际上可以听到我的冷却风扇上下移动,因此 CPU 内核上的总体平均负载为 30%(在上面的示例中)。

    出于与提问者相同的原因,我也使用它来限制 ffmpeg,尽管我通常是“动手”做的。

    • 1

相关问题

  • 如何用ffmpeg 2.0.2保存TS视频流?

  • 快速提取 I 帧到图像

  • 压缩视频可以解码回未压缩的原始格式吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve