在PHP中用视频创建缩略图的更好方法是什么?

时间:2009-09-24 04:50:09

标签: php image video thumbnails

我正在创建一个视频广播网站,我需要知道如何从视频中创建缩略图。请帮忙。任何建议或参考将受到高度赞赏

4 个答案:

答案 0 :(得分:3)

这是从视频中间抓取一个帧的片段。这是我躺在的旧代码,所以我相信它可以简化。请务必调整第1行中的ffmpeg路径以匹配安装位置。

$output = shell_exec("/usr/local/bin/ffmpeg -i {$path}");
preg_match('/Duration: ([0-9]{2}):([0-9]{2}):([^ ,])+/', $output, $matches);
$time = str_replace("Duration: ", "", $matches[0]);
$time_breakdown = explode(":", $time);
$total_seconds = round(($time_breakdown[0]*60*60) + ($time_breakdown[1]*60) + $time_breakdown[2]);
shell_exec("/usr/local/bin/ffmpeg -y  -i {$input_filepath} -f mjpeg -vframes 1 -ss " . ($total_seconds / 2) . " -s {$w}x{$h} {$output_filepath}";

答案 1 :(得分:1)

您可以使用ffmpeg

一旦它安装在您的服务器上,您就可以通过编写命令行在PHP中使用它,并在其上调用exec

e.g:

exec('ffmpeg -i mymovie.mov -vcodec mjpeg -vframes 1 -an -f rawvideo -s 64x64 foo.jpg');

答案 2 :(得分:1)

我知道这个问题已经过时了。但是当我在寻找类似的解决方案时,我遇到了它。以下是我的发现。我希望它可以帮助别人。

答案 3 :(得分:0)

我使用了ffmpeg,用exec()启动任务,并在命令中附加一个&符号,以便PHP脚本可以继续。如果我想首先完成ffmpeg,我没有&符号。

从常见问题解答:“如何将电影编码为单张图片?” http://ffmpeg.org/faq.html#SEC15

ffmpeg -i movie.mpg movie%d.jpg

这会生成许多图像。

来自文档:“视频和音频文件格式转换”http://ffmpeg.org/ffmpeg-doc.html#SEC5

ffmpeg -i foo.avi -r 1 -s WxH -f image2 -vframes 1 foo.jpeg

替换W& H具有宽度/高度(请参阅http://ffmpeg.org/ffmpeg-doc.html#SEC9),将vframe替换为所需的帧数,如果您正在执行多个图像,请将%d添加到序列号的文件名中。要抓住视频中的某个点,请使用-ss(请参阅http://ffmpeg.org/ffmpeg-doc.html#SEC8