用于 FFmpeg 转换的 Linux 作业队列

用于 FFmpeg 转换的 Linux 作业队列

我正在启动一个 Debian 网络服务器,它将托管一个网站,用户可以在其中上传视频文件并播放它们。

因此,需要将视频文件转换为适当的格式(mp4、ogg、webm),以便与不同的浏览器兼容。

到目前为止,我已经编写了一个使用 FFmpeg 完成此操作的 bash 脚本。问题是,当很多用户同时上传视频时,我的网络服务器会变得非常慢。

我正在寻找一种简短易用的解决方案,将不同的调用排队到转换脚本,这样一次只能运行一个实例。我尝试使用批处理命令,但找不到太多关于如何使用它的信息。我还考虑过创建一个命名管道,但也没有成功。

任何帮助都非常感谢

答案1

将所有已完成上传的文件放在一个目录中,无论您使用哪种网络语言。

然后,您可以使用脚本安排一个 cronjob,例如每小时运行一次,并转换待处理/目录中的视频。

您可能需要使用 flock,以便该脚本只有一个实例可以同时运行,即使它花费的时间比预期的要长并且 cron 启动了另一个脚本。

在脚本中您可以使用 nice 来降低其优先级,以便 Web 服务器具有更高的优先级。

答案2

我创建了一个 python3 视频编码服务器供内部使用。只需进行一些修改,它就可以帮你搞定。使用我的 python 服务器,你所要做的就是在一个特殊的队列目录中创建一个符号链接,然后它就会从那里处理它,它还可以处理商业广告跳过(我是 Linux 移植者),如果你对此不感兴趣,你可以将其注释掉。

http://www.xilka.com/xilka/source/VideoEncodeServer.py

http://www.xilka.com/xilka/source/VideoToCuBox.py

相关内容