2013-06-18 119 views
1

我有一个简单的网站上人们上传视频,所以我想从上传的视频生成一个简单的缩略图。我已经尝试了各种技巧和方法来从一些网站做到这一点,但我没有使命令顺利运行。ffmpeg从视频错误获取图像或缩略图

$video = $_FILES['vpopupdropin']["tmp_name"]; 
    $ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 
    $image = "manu.jpg"; 
    $second = 12; 
    $size = "150x90"; 
$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
    shell_exec($command); 

    if(shell_exec($command)){ 
     echo 'okay'; 
     echo '<img src="'.$image.'"/ >'; 
     } 

    else{ 
     echo ' Problem'; 
     } 

我从PHP呼应的命令,这是我得到: C:\ ffmpeg的\ ffmpeg的-20130605-的git-3289670-Win64的静态\ BIN -i C:\ XAMPP \ tmp目录\ php27F1 .TMP -an -ss 12 -s 150x90 -vcodec MJPEG manu.jpg问题

,所以我把上面的命令,并在cmd中输入的,并得到这个错误

[图像2 @ 00000000000000003d87580]无法打开文件: manu.jpg av_interleaved_write_frame():输入/输出错误。上传的文件可以很好地传输到iam保存并在网站上播放,这意味着该文件没有损坏。但缩略图命令似乎失败,我甚至检查了这个网站上的其他问题,但我似乎无法得到正确的解决方案。命令中的路径是正确的,我已验证至少

+0

@ moskito-X的答案真的帮了......我一直在使用您的解决方案了一个多月现在..谢谢你这么多... – Jay

+0

欢迎您;-) –

回答

2

您没有给ffmpeg一个名称:-)所以你试图执行一个\\bin文件夹!

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 

你忘记ffmpeg.exe

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin\\ffmpeg"; 

我做了.AVI用下面的命令

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 

不执行你的命令两次!

$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
shell_exec($command); 

    if(shell_exec($command)){ 

编辑:

您的命令字符串:

ffmpeg -i upload.tmp -an -ss 12 -s 150x90 -vcodec mjpeg  manu.jpg 
  • -vcodec编解码器(输出):设置视频输出编解码器。这是一个输出视频的开关。你想要输出一个图像。
  • -an:您可以禁用音频流。你不需要音频的图像。
  • -ss:位置(输入/输出)当用作输入选项(之前-i)时,请在此输入文件中寻找位置。

我的命令串:

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 
  • -r:FPS(输入/输出,每个流)。设置帧率(Hz值,分数或缩写)。
    作为输入选项,忽略存储在文件中的任何时间戳,而是生成时间戳,假设帧速率为fps。
  • -f image2:强制输出文件格式image2。格式通常是从输出文件的文件扩展名中猜测出来的。
  • -vframes数字(输出):设置要记录的视频帧数。
+0

诚实的错误在那里,离开了ffmpeg,仍然当我尝试正确的命令时,我得到了同样的错误! – Jay

+0

@eMatsiyana:只要你无法用普通的'cmd'来创建一个.jpg文件就没有成功,用php脚本试试这个没用。使用我的命令并用你的文件名替换。 –

+0

..谢谢!!我试过你的命令,它工作,我不知道为什么我没有工作,但如果可以的话,请你指出错误... – Jay