FFmpeg输出到文本文件导致PHP中的500内部服务器错误

时间:2018-03-27 19:17:24

标签: php ffmpeg

我有一个带有两个FFmpeg命令的PHP脚本。第一个命令将.ts文件列表组合到单个.ts文件中,并将输出信息记录到文本文件中。第二个命令将组合的.ts文件转换为mp4文件,并将输出信息记录到文本文件中。

这是PHP:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');

$ffmpeg = "/usr/local/bin/ffmpeg";
$vidClips = 'my_vids/vidClipslist.txt';
$combinedFileTs = 'my_vids/combinedFileTs.ts';
$logFileCombine = 'my_vids/logFileCombine.txt';
$logFileConvert = 'my_vids/logFileConvert.txt';
$combinedFileMp4 = 'my_vids/combinedFileMp4.mp4';

shell_exec("$ffmpeg -f concat -safe 0 -i $vidClips -c copy $combinedFileTs 1> $logFileCombine 2>&1");

shell_exec("$ffmpeg -i $combinedFileTs -f mpegts -codec:v mpeg1video -bf 0 -codec:a mp2 -q 12 $combinedFileMp4 1> $logFileConvert 2>&1");

echo "Video finished.";
?>

当我运行此命令时,页面上会显示我的500.shtml文件消息。但是,我没有收到回显到页面的其他错误消息,也没有在我的Cpanel错误日志中出现任何错误。我也设置了php错误日志,但它没有显示任何错误。 奇怪的是,两个FFmpeg命令都执行了他们应该做的事情,即&#34; combinedFileTs.ts&#34;,&#34; logFileCombine.txt&#34;,&#34; combinedFileMp4.mp4&# 34;和&#34; logFileConvert.txt&#34;都创造了。只是因为我收到500错误而且两个FFmpeg命令之后的PHP脚本没有运行,即echo&#34;视频已完成。&#34;

当我删除第一个FFmpeg命令的输出指令时,即&#34; 1&gt; $ logFileCombine 2&gt;&amp; 1&#34;,一切正常。创建了所有文件,运行了正在运行的PHP脚本,并且我没有收到500错误。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');

$ffmpeg = "/usr/local/bin/ffmpeg";
$vidClips = 'my_vids/vidClipslist.txt';
$combinedFileTs = 'my_vids/combinedFileTs.ts';
$logFileCombine = 'my_vids/logFileCombine.txt';
$logFileConvert = 'my_vids/logFileConvert.txt';
$combinedFileMp4 = 'my_vids/combinedFileMp4.mp4';

shell_exec("$ffmpeg -f concat -safe 0 -i $vidClips -c copy $combinedFileTs");

shell_exec("$ffmpeg -i $combinedFileTs -f mpegts -codec:v mpeg1video -bf 0 -codec:a mp2 -q 12 $combinedFileMp4 1> $logFileConvert 2>&1");

echo "Video finished.";
?>    

此外,第一个FFmpeg命令需要大约2分钟才能运行。认为问题是由于PHP脚本被杀死,我在我的php.ini文件中将max_execution_time增加到600并将memory_limit增加到512M,但这并没有解决问题。

我需要两个FFmpeg命令来生成输出日志文本文件,我需要运行正在进行的PHP代码。

0 个答案:

没有答案