2013-02-09 114 views
0

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

/*** 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)

回答

1

最好的方法是将作业添加到队列并让服务器以异步方式处理ffmpeg转换。

如果服务器已完成作业,用户必须手动重新检查。

你必须做这样的事情:

  1. 创建队列数据库表。
  2. 如果应该完成新的ffmpeg转换,请将作业添加到队列表中。
  3. 在服务器上添加一个cronjob,它会自动查找新作业并执行ffmpeg转换。 More details here.
  4. 当cronjob完成转换后,将作业标记为完成,删除它或其他。
+0

如果我想发送一封电子邮件给我的用户,该怎么办? ...我不能得到一个自动报告..喜欢..完成automaticali后插入一个SQL记录...? – janos 2013-02-09 14:41:20

+0

是的,这是可能的。 – 2013-02-09 14:42:52

+0

你能告诉我如何?请举一个简单的例子?这对我来说真的很有帮助.. – janos 2013-02-09 14:46:37