Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找到ffmpeg的绝对路径_Php_Ffmpeg_Ffmpeg Php - Fatal编程技术网

Php 找到ffmpeg的绝对路径

Php 找到ffmpeg的绝对路径,php,ffmpeg,ffmpeg-php,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 =

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

多谢各位


如果使用的是
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\u status
将为非0),您将得到该
$stderr
数组上发生的情况


如果我遗漏了什么,请告诉我

我将分别粘贴我给我的朋友所做的编辑:/usr/lib64/php/modules/ffmpeg.soFFmpeg版本0.6,版权(c)2000-2010 ffmpeg开发人员于2013年11月7日15:35:47构建,gcc 4.4.7 20120313(Red Hat 4.4.7-3)配置:libavutil 50.15。1 / 50.15. 1 libavcodec52.72。2 / 52.72. 2 libav52.64格式。2 / 52.64. 2 libav52设备。2.0 / 52. 2.0 libswscale 0.11。0 / 0.11. 0 sample.mp4:无法从“sample.mp4”中定位208.044输入#0、mov、mp4、m4a、3gp、3g2、mj2:元数据:主要品牌:短跑次要版本:0兼容品牌:iso6avc1mp41持续时间:00:03:18.03和:开始:178.044367,比特率:26 kb/s流#0.0(und):视频:h264、yuv420p、640x360、29.97 tbr、90k tbn,59.94 tbc未识别选项“frames:v”因此您使用的是未识别选项
-frames:v
。。。我想您应该改用
-vframes
选项。更新我的答案以使用该答案。:)是的,这是一个未经批准的命令,但我仍然无法得到大拇指。。。我还得到了sample.mp4:无法定位238.044Ermmm,不知道为什么您得到
无法定位238.044
,似乎是特定于您的
sample.mp4
文件。。。请注意,
$finalfilename
使用的是一个统一化的
$randomfilename
变量,因此最终得到的是
images/.jpg
值,这在Unix系统中意味着一个隐藏文件。我认为,如果您初始化
$randomfilename
,它将按预期工作,似乎您可以忽略搜索错误。。。如果不是,则特定于该文件,因为该命令适合您的需要。:)