web-dev-qa-db-fra.com

Générer une image d'aperçu à partir du fichier vidéo?

Existe-t-il un moyen dans PHP étant donné un fichier vidéo (.mov, .mp4) pour générer un aperçu de l'image miniature?

39
JD Isaacks
18
mr-sk

Solution n ° 1 (ancienne) (non recommandée)

Installez d'abord le projet ffmpeg-php ( http://ffmpeg-php.sourceforge.net/ )

Et puis vous pouvez utiliser ce code simple:

<?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.'">';
    }
}
?>

Description: Ce projet utilise le fichier d'extension binaire .so, Il est très ancien et la dernière mise à jour date de 2008. Donc, ça ne marche peut-être pas avec une version plus récente de FFMpeg ou PHP.


Solution # 2 (mise à jour 2018) (recommandée)

Installez d'abord le projet PHP-FFMpeg ( https://github.com/PHP-FFMpeg/PHP-FFMpeg )
(il suffit de lancer l'installation: composer require php-ffmpeg/php-ffmpeg)

Et puis vous pouvez utiliser ce code simple:

<?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.'">';

Description: C'est un projet plus récent et plus moderne et fonctionne avec la dernière version de FFMpeg et PHP. Notez qu'il est nécessaire de proc_open() PHP.

37
Nabi K.A.Z.

Deux façons me viennent à l'esprit:

  • En utilisant un outil en ligne de commande comme le populaire ffmpeg , cependant vous aurez presque toujours besoin d'un propre serveur (ou d'un administrateur de serveur/société d'hébergement) pour l'obtenir

  • Utilisation du plug-in " " du plug-in LongTail Video player qui permet la création de captures d'écran manuelles qui sont ensuite envoyées à un script côté serveur.

8
Pekka 웃