Generate preview image from Video file?

JD *_*cks 42 php video php4 thumbnails

Is there a way in PHP given a video file (.mov, .mp4) to generate a thumbnail image preview?

Nab*_*.Z. 38

解决方案#1(较旧)(不推荐)

首先安装ffmpeg-php项目(http://ffmpeg-php.sourceforge.net/)

然后你可以使用这个简单的代码:

<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';

$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
    $gd_image = $frame->toGDImage();
    if ($gd_image) {
        imagepng($gd_image, $thumbnail);
        imagedestroy($gd_image);
        echo '<img src="'.$thumbnail.'">';
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

说明:此项目使用二进制扩展.so文件,它非常陈旧,最后一次更新是针对2008年的.所以,也许不适用于较新版本的FFMpegPHP.


解决方案#2(更新2018)(推荐)

首先安装PHP-FFMpeg项目(https://github.com/PHP-FFMpeg/PHP-FFMpeg)
(只运行安装:composer require php-ffmpeg/php-ffmpeg)

然后你可以使用这个简单的代码:

<?php
require 'vendor/autoload.php';

$sec = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';

$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($movie);
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds($sec));
$frame->save($thumbnail);
echo '<img src="'.$thumbnail.'">';
Run Code Online (Sandbox Code Playgroud)

描述:它是更新,更现代的项目,并与最新版本FFMpegPHP.请注意,这是proc_open()PHP函数所必需的.

  • API已更改,此答案需要更新;) (2认同)

Pek*_*ica 8

想到两种方式:

  • 使用命令行工具,如流行的ffmpeg,但你几乎总是需要一个自己的服务器(或一个非常好的服务器管理员/托管公司)来获得

  • 使用LongTail视频播放器的" screenshoot "插件,允许创建手动屏幕截图,然后发送到服务器端脚本.