【问题标题】:Improve ffmpeg CPU usage by compromising quality通过牺牲质量来提高 ffmpeg CPU 使用率
【发布时间】:2015-09-02 12:10:29
【问题描述】:

我正在使用 FFMpeg 进行屏幕捕获。 我正在寻找可以在 1000 个虚拟机(Windows 和 mac)上运行的屏幕捕获工具。这些虚拟机的 CPU(1 个核心)和 2GB 内存且没有 GPU。

目前我使用 ffmpeg 调用

ffmpeg  -y -framerate 8 -f dshow -f gdigrab -i "desktop"  -c:v libx264  -crf 0 -preset ultrafast -threads 0 temp.mkv

我正在使用 gdigrab 来捕获屏幕?有没有更好的选择可以减少 CPU 的使用?或更改编码器或格式?

我的目标是将 CPU 使用率降低 4-5%。

提前致谢

【问题讨论】:

    标签: video ffmpeg libx264 ffdshow


    【解决方案1】:

    使用-profile baseline 并启用-tune zerolatency 来开启一些额外的功能应该会有所帮助。否则,您将需要使用与 h.264 不同的编解码器。

    【讨论】:

    • 我尝试了 -profile baseline 和 -tune zerolatency 但这对我没有多大帮助。对于低 CPU,您还建议使用哪些其他编解码器?
    • 完全取决于你的目标。 YUV 将占用 0% 的 CPU,但文件会很大。
    • 我的目标是使用中等大小、低质量、低 CPU 的解决方案来录制桌面。这个工具需要在 1000 台 Windows 机器上运行,并且会为我记录 selenium 测试,仅占用 80% 的 cpu。我很高兴尝试其他原生工具而不是 ffmpeg,但我找不到任何工具。
    • MPEG2 可能是一个不错的选择。我认为您可能需要进行一些试验,可能是 Theora、xvid 或 mpeg4 第 2 部分。如果生成的文件大小适合您,甚至可能是 mjpeg。你可以运行ffmpeg -codec 来查看它支持什么。但我会坚持我列出的兼容性。
    【解决方案2】:

    您的来源的分辨率是多少?如果它很大(如 1080p 或 720p),您是否考虑过先缩小到 480p / 404p?

    否则,最好只更改编解码器。我建议你先试试“-c:v mpeg4”。如果仍然太慢,请使用“-c:v mpeg2video”。

    【讨论】:

    • Ely,我都试过了,'mpeg2video' 似乎使用较少的 cpu,但我仍在寻找更好的解决方案。感谢您的回答。注册。尺寸我需要不同的尺寸,所以小尺寸不是一种选择。
    • 您最后的解决方案是限制您录制的帧速率。我不知道您当前的 fps 是多少,但如果是 30,请尝试使用 -framerate 开关降低到 25 / 20 / 15 / 10 编辑:nvm,我刚刚在您的原始评论中看到 -framerate 8。我的错。
    • 最后一个想法,我看到您正在尝试使用 crf=0 对无损流进行编码。如果您使用 crf=18 之类的代码进行编码,并且仍然获得“视觉无损”质量,您将获得更好的速度。
    • 我最终选择了mpeg2视频,但是好像没有办法在网络上播放?任何想法? @szatmary?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多