web-dev-qa-db-fra.com

Des miniatures pour des vidéos dans plusieurs formats?

J'ai quelques vidéos de formation intranet réalisées au fil des ans dans divers formats (AVI, WMV, MOV, RealPlayer) et j'aimerais proposer quelque chose comme une fonction de prévisualisation - peut-être une miniature GIF animée avec quelques écrans représentatifs, ou peut-être une miniature. feuille, je peux montrer à l'utilisateur avec une image toutes les quelques secondes de vidéo. Existe-t-il un outil d'image simple que je peux utiliser pour créer de telles choses?

Une plate-forme agnostique serait géniale, mais elle est unique (pour l'instant, haha), donc Windows, Mac ou Linux irait bien. Merci.

4
artlung

Je pensais simplement que cela devrait être fait facilement dans python et une recherche sur Google pour "vignette vidéo python" a pour résultat ce site:

http://notbrainsurgery.livejournal.com/29773.html

Vous pouvez essayer le sourcode fourni ici ...

3
mbrochh

Ne peut pas manquer le Saint Graal des systèmes vidéo, FFMPEG. Il fait à peu près tout ce dont vous avez besoin pour la vidéo en ligne: convertissez-le en plusieurs formats et convertissez-les en vignettes, etc. Une variante industrielle fortement modifiée de FFMPEG permet à YouTube de fonctionner comme il se doit.

Voici une commande rapide pour la vignette en ligne de commande: http://blog.prashanthellina.com/2008/03/29/creating-video-thumbnails-using-ffmpeg/

Il y a beaucoup d'autres tuts pour toutes ses autres fonctionnalités.

2
bpeterson76

J'ai déjà répondu comment faire cela sur Stack Overflow ici en utilisant ffmpeg et PHP.

Désolé pour la réponse centrée sur le code, mais cela est plus facile en écrivant du code réel.

/**
* ExtractThumb, extracts a thumbnail from a video
*
* This function loads a video and extracts an image from a frame 4 
* seconds into the clip
* @param $in string the input path to the video being processed
* @param $out string the path where the output image is saved
*/
function ExtractThumb($in, $out)
{
    $thumb_stdout;
    $errors;
    $retval = 0;

    // Delete the file if it already exists
    if (file_exists($out)) { unlink($out); }

    // Use ffmpeg to generate a thumbnail from the movie
    $cmd = "ffmpeg -itsoffset -4 -i $in -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 $out 2>&1";
    exec($cmd, $thumb_stdout, $retval);

    // Queue up the error for processing
    if ($retval != 0) { $errors[] = "FFMPEG thumbnail generation failed"; }

    if (!empty($thumb_stdout))
    {
        foreach ($thumb_stdout as $line)
        {
            echo $line . "\n";
        }
    }

    if (!empty($errors))
    {
        foreach ($errors as $error)
        {
            echo $error . "\n";
        }
    }
}

Ne pas obtenir beaucoup plus multi-plateforme que cela.

Voici une ventilation des drapeaux:

  • L'indicateur -itsoffset est l'heure dans la vidéo à laquelle l'instantané est pris.
  • -vcodec est le type de sortie (changement en png pour png, etc ...)
  • -vframes a la valeur un car vous n'extrayez qu'une image (c'est-à-dire une image)
  • vous devrez peut-être aussi ajouter -deinterlace

C'est à peu près ça. Ça ne devient pas plus facile que ça. Si vous faites plusieurs captures d'écran pour un film, changez simplement l'indicateur -itsoffset. En dehors de cela, c'est un package complet, sauf si vous choisissez d'ajouter de meilleures informations d'erreur ou de supprimer les sorties.

1
Evan Plaice

Je pense que Flowplayer (c'est très bien documenté et avec de nombreux exemples) ou quelque chose de similaire est une meilleure solution sous forme d'extrait que vous devrez peut-être éditer ou maintenir.

Une fois que FlowPlayer est correctement configuré, il peut servir les pouces sans charger la vidéo complète. C'est un peu délicat de configurer cela, mais une fois que cela fonctionne, vous avez une solution solide, multiplateforme. (Et avec un clic sur le pouce la lecture de la vidéo ;-))

Si vous choisissez flowplayer, vous devriez également jeter un oeil à video4all (utilise html5 avec flowplayer comme solution de secours) et au flowplayer-plugins .

0
fwaechter