转换背景php ffmpeg中的视频?

时间:2013-02-09 14:30:31

标签: php apache debian exec

我想用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)

1 个答案:

答案 0 :(得分:1)

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

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

你必须做这样的事情:

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