2013-12-12 85 views
0

我想从一个PHP脚本启动一个ffmpeg进程,我知道它已被问了很多次,但我尝试了很多解决方案,并且它们都没有工作,每次php脚本永远不会结束,除非我杀死ffmpeg进程。目前我正在使用这个脚本,它确实启动了ffmpeg,并在指定的文件中写入了信息,但php脚本将永久加载。Php exec ffmpeg没有在后台运行

我错过了什么?

$cmd = 'cd cache && ffmpeg -y -i "rtsp://stream" -r 20 -f image2 a%6d.jpg >/dev/null 2>/dev/null &'; 

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, 'log.txt', 'error.txt' . '.pid')); 

多一点信息:我在CentOS 6.5

运行FFmpeg的0.6.5,5.3.3 PHP

谢谢您的时间!

回答

0

您可以使用> /dev/null &代替2>&1 &

这将在后台执行$cmd没有PHP等待它完成。

编号:http://php.net/manual/en/function.exec.php

+0

谢谢,但仍然无法正常工作,页面加载永远,如果我从加载FFmpeg的过程中的确会在后台继续运行停止的网页...但它必须继续执行PHP脚本。 – mircea

+0

我发现是什么导致问题,你的回答确实是正确的,但因为命令有CD缓存&&它不起作用,当我改变&& to ;它终于在后台运行。谢谢 – mircea