如何使用PHP和ffmpeg在后台转换视频

时间:2015-07-17 16:57:14

标签: php windows video ffmpeg

我允许用户上传视频,然后使用ffmpeg进行转换。视频转换需要很长时间,这通常会导致错误。我完成了我的研究,没有运气,我应该从哪里开始。

基本上我想要做的是允许用户上传视频,然后显示一条消息,说明正在处理视频,并在可用时通知您。与此同时,我希望在幕后转换视频,并允许用户离开页面甚至关闭浏览器。我使用的是Windows服务器。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

以下是如何使用Cron等调度系统创建自己的队列的基本简要说明:

  • 创建包含queue的数据库表(id, created_at, file_path, id_user, result, error)file_path包含要处理的已上传视频的位置,处理前结果为null,之后结果为true/false,具体取决于成功,如果失败error包含任何消息。如果合适,也可以在此处保存用户表的主键。
  • 每分钟运行一次Cron程序,检查队列中是否存在任何未处理的项目。
  • 如果有等待的项目,请循环显示其中一些项目并运行您的视频转换代码。您可能希望对此进行限制,以便一次只处理五个项目,并且任何更多排队的项目都必须等待新的cron运行。
  • 在您的cron脚本开始时,如果旧副本已在运行,则需要提前退出。如果您在类似* nix的操作系统中运行,可以使用ps aux | grep (scriptname)的输出来提供帮助。

在您的网络应用程序中,您需要稍微修改工作流程 - 而不是期望立即处理视频,您需要:

  • 通过创建新的数据库行请求视频转换
  • 重定向到解释视频创建正在进行的页面
  • 使用网络重定向,AJAX或网络套接字定期重新检查转化状态。

此方法对于无法安装自己的队列处理器的共享主机非常有用。但是,如果您使用的是VPS或云系统,您可能希望查看Gearman或one of many other queueing systems。它们比上面的要复杂一些,但是有更多的功能来管理工作队列。