我将ffmpeg和ffmpeg-php安装到我的专用服务器上并使用一个小脚本我试图从特定的第二个提取图像。
<?php
$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;
$timeOffset = "00:00:30";
$videoPath = "sample.mp4";
$extensi = ".jpg";
$folder = "images/";
$finalfilename = $folder . $randomfilename . $extensi;
echo $extension_fullname; //I AM GETING THIS /usr/lib64/php/modules/ffmpeg.so
if (exec("ffmpeg -ss $timeOffset -i $videoPath -frames:v 1 $finalfilename")){
echo "Done";
}else{
echo "Error";
}
?>
正如你在我的执行命令中看到的那样是ffmpeg,但我怎样才能找到ffmpeg的绝对路径?看看我的截图,也许这有助于你告诉我..
我的最后一个问题是什么是ffmpeg-php?我需要它吗?我已经安装了它。
谢谢
答案 0 :(得分:3)
如果您使用ffmpeg
可执行文件,则不需要ffmpeg-php
。您可能只想使用ffmpeg
可执行文件,因为与ffprobe
可执行文件一起可以执行任何操作。
我没有明白你$extension*
的变量。要了解安装ffmpeg
的绝对路径,您可以使用which
计划:which ffmpeg
。
您的exec()
电话检查错误,我建议您这样使用:
exec("ffmpeg -v error -y -ss $timeOffset -i $videoPath -vframes 1 $finalfilename 2>&1 >/dev/null", $stderr, $exit_status);
if ($exit_status === 0) {
print 'Done! :)';
} else {
print 'Error... :/';
// implode("\n", $stderr) will help you figure out what happened...
}
我添加了-v error
让ffmpeg
仅输出错误消息,-y
以避免$finalfilename
文件存在问题。我还压缩了所有STDOUT
并仅将STDERR
输出移至$stderr
变量。如果您的exec()
调用由于某种原因失败($exit_status
将为非0),您将获得该$stderr
数组上发生的事情。
如果我遗失了什么,请告诉我!