我必须得到视频的缩略图,我正在使用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);
请提供任何解决方案。
答案 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);