Создать предварительное изображение из видео файла? - PullRequest
38 голосов
/ 11 января 2010

Есть ли в PHP способ предоставить видеофайл (.mov, .mp4) для создания эскиза предварительного просмотра изображения?

Ответы [ 3 ]

36 голосов
/ 31 июля 2012

Раствор № 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.

18 голосов
/ 11 января 2010
8 голосов
/ 11 января 2010

На ум приходят два пути:

  • Используя инструмент командной строки, такой как популярный ffmpeg , однако вам почти всегда понадобится собственный сервер (или очень хороший администратор серверов / хостинговая компания) для получить это

  • Использование плагина " " для видеопроигрывателя LongTail , который позволяет создавать скриншоты вручную, которые затем отправляется на серверный скрипт.

...