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


0

我想提供一个像Youtube一样运营的网站。为我的用户提供一种工具,通过FFMPEG以多比特率在我的服务器上上传他们的视频。但是当FFMPEG从单个视频制作多比特视频文件时,服务器CPU使用率被最大化。这意味着即使我使用市场上最强大的CPU,也只有少数人可以上传他们的视频。因此,请告诉我如何在FFMPEG制作多比特率视频时降低CPU使用率。


操作系统?
slhck

Windows Server 2008 R2
M.Yazdian 2014年

Answers:


3

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

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

所以如果你现在正在使用

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

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

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

编辑:我看到你正在使用Windows Server 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. 如果您愿意(或使用云服务),您可以添加更多服务器来进行渲染。

然而,这带来了大量的工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.