【问题标题】:Convert videos in background php ffmpeg?在后台php ffmpeg中转换视频?
【发布时间】:2013-02-09 14:30:31
【问题描述】:

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

【问题讨论】:

    标签: php apache debian exec


    【解决方案1】:

    最好的办法是把作业加入队列,让服务器异步处理ffmpeg转换。

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

    你必须这样做:

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

    【讨论】:

    • 如果我想在完成后向我的用户发送一封电子邮件怎么办? ...我不能得到一个自动报告..就像..完成后自动插入一条sql记录...?
    • 你能告诉我怎么做吗?请举个简单的例子好吗?这对我真的很有帮助..
    • 你的意思是 crontab。我明白了,但是没有 cronjob 可能吗?克朗塔布?现在我的 FFMPEG 运行良好。我也得到了关于我的转换的信息,但我想在它完成后运行 X.php...
    • 您必须将转换放在 PHP 文件中并使用 crontab 运行 PHP 文件。然后你可以在转换后运行其他PHP代码。
    • 你不懂我...有一个文件,比如converter.php ...在文件中我执行exec(FFMPEG...);在 sql_qery...这是我的逻辑。我认为它应该可以工作......
    猜你喜欢
    • 2015-10-07
    • 2010-12-26
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多