我有两种方法没有成功和不同的结果,使用exec方法ffmpeg实际上工作并创建输出文件,但随后网站崩溃,错误500。 如果我使用proc_open方法然后它运行并在输出存储文件夹中创建日志文件atest.log,但最后的ffmpeg错误:store \ _ audio_recording_1441120844021u.mp3:权限被拒绝并且不会写出文件。
ffmpeg具有IUSR完全控制权限,并且这些权限也在商店文件夹中。
任何想法???
exec方法: -
$cmd = "ffmpeg.exe -i C:\\Windows\\Temp\\recordings\\".$filename." -i watermark.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 store\\".$filename;
echo exec($cmd, $o, $v);
proc_open方法: -
$cmd = "ffmpeg.exe -i C:\\Windows\\Temp\\recordings\\".$filename." -i watermark.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 store\\".$filename;
$pipes = array();
$descriptors = array(2 => array('file', 'store\\atest.log', 'a'));
$p = proc_open($cmd, $descriptors, $pipes);
$done = 0;
while (!$done)
{
sleep(1);
$status = proc_get_status($p);
if (!$status['running']) $done = 1;
echo "STEEL RUN\n";
// some manipulations with "store\\atest.log"
}
答案 0 :(得分:1)
为exec()添加-nostdin做了伎俩。 e.g。
$ cmd =“ffmpeg.exe -nostdin -i C:\ Windows \ Temp \ recordings \”。$ filename。“ - i watermark.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 store” 。$文件名;