Раствор № 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.'">';
}
}
?>
Описание: В этом проекте используется двоичное расширение .so
file. Это очень старое и последнее обновление было в 2008 году. Поэтому, возможно, не работает с более новой версией FFMpeg
или PHP
.
Решение № 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.'">';
Описание: Это более новый и современный проект, работающий с последними версиями FFMpeg
и PHP
. Обратите внимание, что требуется proc_open()
функция PHP.