在YII中使用ffmpeg从mp4视频中获取图像

我编写了一个代码,用于在YII中使用ffmpeg从上传的mp4视频中获取图像。</ p> \ n

在localhost中,当我写完像这样的 d:/ wamp / www / projectname / ffmpeg </ code>这样的绝对路径时,它工作得很好,我正在获取图像,但当我尝试时 下面使用 baseurl </ code> </ p>

  $ var =“http://”。$ _ SERVER ['HTTP_HOST']。Yii :: app() - &gt  ; request-&gt; baseUrl; 
$ ffmpeg = $ var。“/ ffmpeg / bin / ffmpeg.exe”;
</ code> </ pre>

我无法获取图像 来自视频。</ p>

这是我的代码</ p>

  $ var =“http://”。$ _ SERVER ['HTTP_HOST']。  Yii :: app() - &gt; request-&gt; baseUrl; 
$ ffmpeg = $ var。“/ ffmpeg / bin / ffmpeg.exe”;
// $ uploaddir是我的文件上传路径
$ video = $ uploaddir $ IMAGE_NAME。

//保存图像的位置
$ iname = basename($ image_name,“。mp4”);
$ image = $ uploaddir。'/'。$ iname .'_ img.jpg';

//时间在
$ interval = 5处截取屏幕截图;

//截图大小pn
$ size ='640x480';

// ffmpeg命令
$ cmd =“$ ffmpeg -i”。$ video。“ - s 00:00:01.100 -f image2 -vframes 1”。$ image;
exec($ cmd);
< / code> </ pre>
</ div>

展开原文

原文

I have written a code to get an image from an uploaded mp4 video using ffmpeg in YII.

In localhost, when i have written absolute path like d:/wamp/www/projectname/ffmpeg like this, it is working perfectly and i am getting image but when I tried like below using baseurl

$var="http://".$_SERVER['HTTP_HOST'].Yii::app()->request->baseUrl;
$ffmpeg = $var."/ffmpeg/bin/ffmpeg.exe";

I am unable to get the image from video.

Here is my code

$var="http://".$_SERVER['HTTP_HOST'].Yii::app()->request->baseUrl;
$ffmpeg = $var."/ffmpeg/bin/ffmpeg.exe";
// $uploaddir is my file upload path
$video = $uploaddir.$image_name;  
//where to save the image
$iname = basename($image_name, ".mp4");
$image = $uploaddir.'/'.$iname.'_img.jpg';  
//time to take screenshot at  
$interval = 5;  
//screenshot size  pn 
$size = '640x480';  
//ffmpeg command  
$cmd="$ffmpeg -i ".$video." -ss 00:00:01.100 -f image2 -vframes 1 ".$image;
exec($cmd);

1个回答



无法执行“ http://foo.bar/ffmpeg/ffmpeg.exe “,
exec需要二进制文件的绝对路径:</ p>

  / **

*返回d:/ wamp / www / projectname
  • / $ var = dirname(Yii :: app() - &gt; getBasePath()); $ ffmpeg = $ var。“/ ffmpeg / bin /ffmpeg.exe"; if(!file_exists($ffmpeg)) exit(“抱歉老兄,我找不到ffmpeg.exe!”); </ code> </ pre> </ div>

展开原文

原文

it is not possible to execute "http://foo.bar/ffmpeg/ffmpeg.exe", exec requires a absolute path to the binary:

/**
 * return d:/wamp/www/projectname
 */
$var = dirname(Yii::app()->getBasePath());
$ffmpeg = $var."/ffmpeg/bin/ffmpeg.exe";
if(!file_exists($ffmpeg))
   exit("sorry dude, i cant find ffmpeg.exe!");

dongwei8729
dongwei8729 解雇了这个错误“抱歉,老兄......”
大约 5 年之前 回复
drus39136
drus39136 嗨亨利,谢谢你的回复......我根据你的线路更改了代码,但我没有从视频中获取任何图像,在本地它工作正常,当我们写入文件存在时也没有显示任何错误 和文件存在于具有给定路径的文件夹中,但图像未从视频中获取
大约 5 年之前 回复
dongtaogou6226
dongtaogou6226 我修改了我的代码。 在服务器上触发错误时,ffmpeg.exe不在d:/wamp/www/projectname/ffmpeg/bin/ffmpeg.exe中。 在这种情况下,您必须在服务器上安装ffmpeg或在本地环境中提供API。
大约 5 年之前 回复
doumi5223
doumi5223 感谢您的回复。 我已经尝试过你的代码,它在我的本地主机上工作正常,但是来到服务器,它无法正常工作。
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问