0

我想用 exec()、FFMPEG php 转换视频。我想在后台运行脚本。我怎样才能做到这一点?

/*** convert video to flash ***/ 

$v = date('H-i-s');

//   exec("ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/".microtime()."video.flv 1> flash/".$v."_block.txt 2>&1");

$cmd = 'ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/'.microtime().'.flv';

$outputfile = $v.'.txt.';
$pidfile = $v.'_id.txt.';

      exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

这是我的代码,但不要做任何事情。我想用 php 运行脚本,但我不想等待 http 加载时间直到脚本完成......

或者我如何使用 exec() 运行 something.php;? 如果我可以运行 php,那我就很容易做出我需要的一切。(linux debian, apache2, php5)

4

1 回答 1

1

最好的方法是在队列中添加一个作业,让服务器以异步方式处理 ffmpeg 转换。

用户必须手动重新检查服务器是否已经完成工作。

你必须做这样的事情:

  1. 创建队列数据库表。
  2. 如果应该完成新的 ffmpeg 转换,请将作业添加到队列表。
  3. 在服务器上添加一个 cronjob,它会自动查找新作业并执行您的 ffmpeg 转换。更多细节在这里。
  4. 当 cronjob 完成转换后,将作业标记为已完成,删除它,或者其他什么。
于 2013-02-09T14:35:03.707 回答