FFMPEG 制作多比特率视频时如何降低 CPU 使用率

FFMPEG 制作多比特率视频时如何降低 CPU 使用率

我正在尝试提供一个像 Youtube 一样运行的网站。为我的用户提供一种便利,让他们通过 FFMPEG 在我的服务器上以多比特率上传视频。但是当 FFMPEG 从单个视频制作多比特率视频文件时,服务器 CPU 使用率会达到最大值。这意味着即使我使用市场上最强大的 CPU,也只有少数人可以上传他们的视频。所以请告诉我如何在 FFMPEG 制作多比特率视频时降低 CPU 使用率。

答案1

最简单的答案是,如果您使用 Linux 或类似系统,请nice在启动 ffmpeg 时使用该命令。

您可以将其nice与任何标准命令一起使用,它会调整命令的 CPU 优先级。

因此,如果你目前正在使用

ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

(显然,除了更有趣的论点),你可以这样做

nice ffmpeg -i uploaded.mpg -vcodec copy  out1.mpg

编辑:我看到你正在使用Windows 服务器 2008

在 Windows 上,该命令的替代方法nice是使用START带有选项的命令。

这个页面值得一读:http://technet.microsoft.com/en-us/library/cc770297.aspx

因此你可以使用类似如下的方法:

start /wait /low /b  ffmpeg [your arguments here]
  • /wait表示在最后启动命令,并等待其完成。否则它将启动 ffmpeg 并立即返回 - 如果您已经构建了这样的循环,则可能会启动 ffmpeg 的另一个副本来创建替代比特率。

  • /low是说以低优先级运行该进程

  • /b意味着不要打开命令提示符窗口,因为您的服务器上不需要它。

这些可能不是最佳答案。最佳答案是在另一台(或多台)服务器上进行视频处理。您需要共享数据库和磁盘存储。当有人上传视频时,需要将其标记为转换。然后您的渲染农场可以逐一挑选渲染任务,保存到磁盘并使用可用的比特率更新数据库。

像这样分离渲染有两个优点:

  1. 这意味着你的网络服务器不会因处理视频而陷入困境,因此仍能响应用户
  2. 如果您愿意,可以添加更多服务器来进行渲染(或使用云服务)。

但这需要大量工作。

相关内容