ffmpeg从终端工作,但不是由PHP脚本

时间:2017-08-25 19:39:25

标签: php video ffmpeg

我必须得到视频的缩略图,我正在使用ffmpeg。在我的服务器上我从ssh运行ffmpeg命令然后它正在工作但是从php exec函数它不工作它给出错误/ usr / bin / ffmpeg:没有这样的文件或dirctory但是ffmpeg安装在这个位置usr /斌/ ffmpeg的。 我的源代码是:

$ffmpeg = '/usr/bin/ffmpeg';

$videoname = 'myvideo.mp4';

$video = $_SERVER['DOCUMENT_ROOT'].'/uploads/videos/'.$videoname;

$image = $_SERVER['DOCUMENT_ROOT'].'/uploads/thumbs/thumb.jpg';

$second = 1;

$cmd = "$ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";

exec($cmd);

请提供任何解决方案。

2 个答案:

答案 0 :(得分:0)

使用此代码更新代码,您将很高兴。

  

`$ ffmpeg =' / usr / bin / ffmpeg';

     

$ videoname =' myvideo.mp4';

     

$ video = $ _SERVER [' DOCUMENT_ROOT']。' / uploads / videos /'。$ videoname;

     

$ image = $ _SERVER [' DOCUMENT_ROOT']。' /uploads/thumbs/thumb.jpg' ;;

     

$ second = 1;

     

$ cmd =" $ ffmpeg -i'"。$ video。"' -deinterlace -an -ss $ second -t   00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg'"。$ image。"' 2 - ;&安培; 1&#34 ;; echo $ cmd;   EXEC($ CMD);`

由于缺少变量引号,有时exec()函数未命中行为。

答案 1 :(得分:0)

使用 shell_exec 代替 exec

$ffmpeg = '/usr/bin/ffmpeg';

$videoname = 'myvideo.mp4';

$video = $_SERVER['DOCUMENT_ROOT'].'/uploads/videos/'.$videoname;

$image = $_SERVER['DOCUMENT_ROOT'].'/uploads/thumbs/thumb.jpg';

$second = 1;

$cmd = "$ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";

shell_exec($cmd);