找到ffmpeg的绝对路径

时间:2013-11-10 11:34:54

标签: php ffmpeg ffmpeg-php

我将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?我需要它吗?我已经安装了它。

谢谢

enter image description here

1 个答案:

答案 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 errorffmpeg仅输出错误消息,-y以避免$finalfilename文件存在问题。我还压缩了所有STDOUT并仅将STDERR输出移至$stderr变量。如果您的exec()调用由于某种原因失败($exit_status将为非0),您将获得该$stderr数组上发生的事情。

如果我遗失了什么,请告诉我!