it-swarm-eu.dev

Náhledy videí ve více formátech?

Mám několik intranetových tréninkových videí natočených v průběhu let v mnoha formátech (AVI, WMV, MOV, RealPlayer) a rád bych poskytl něco jako funkci náhledu - možná miniaturní animovaný GIF s několika reprezentativními obrazovkami nebo možná miniatura list Mohu ukázat uživateli obrázek každých pár sekund videa. Existuje snadný obrazový nástroj, který mohu použít a který dokáže takové věci vytvářet?

Agnostika na platformě by byla skvělá, ale je to jednorázová (prozatím haha), takže Windows, Mac nebo Linux by byly v pořádku. Dík.

4
artlung

Jen jsem si myslel, že by to mělo být snadno provedeno v python a výsledky vyhledávání Google na stránce „miniatura videa python“ na tomto webu:

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

Můžete zkusit zde uvedený kód sourcode ...

3
mbrochh

Nenechte si ujít svatý grál video systémů, FFMPEG. Dělá to téměř všechno, co byste mohli potřebovat v online videu - pořizujte více formátů a převádějte je na jiné, miniatury atd. Výrazně upravená průmyslová varianta FFMPEG je to, co umožňuje YouTube pracovat tak, jak to dělá.

Zde je stručná ukázka příkazového řádku: http://blog.prashanthellina.com/2008/03/29/creating-video-thumbnails-using-ffmpeg/

Existuje mnoho dalších tuts tam pro všechny jeho další funkce.

2
bpeterson76

Už jsem odpověděl, jak to udělat na Stack Overflow zde pomocí ffmpeg a PHP.

Omlouváme se za odpověď zaměřenou na kód, ale to v dávkovém procesu je nejsnadněji proveditelné napsáním skutečného kódu.

/**
* 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";
        }
    }
}

Nezíská mnohem více napříč platformami než to.

Zde je přehled vlajek:

  • -itsoffset flag je čas ve videu, kdy je snímek pořízen
  • -vcodec je typ výstupu (změna na png pro png, atd ...)
  • -vrámy jsou nastaveny na jeden, protože extrahujete pouze jeden snímek (IE obrázek)
  • možná budete muset přidat -deinterlace

To je o tom. Nezdá se to mnohem jednodušší. Pokud pro film děláte několik snímků obrazovky, stačí změnit příznak -itsoffset. Kromě toho je to kompletní balíček, pokud jste se nerozhodli přidat lepší informace o chybách nebo potlačit výstupy.

1
Evan Plaice

Myslím, že Flowplayer (Je to velmi dobře zdokumentované as mnoha příklady) nebo něco podobného je lepší řešení jako úryvek, který možná budete muset upravit nebo udržovat.

Jakmile je FlowPlayer nakonfigurován správně, může zobrazovat palce bez načtení celého videa. Je to trochu složité to nakonfigurovat, ale jakmile to bude fungovat, budete mít solidní, multiplattformní řešení. (A kliknutím na palec se video přehraje ;-))

Pokud zvolíte flowplayer, měli byste se také podívat na video4all (používá html5 s flowplayer jako záložní) a flowplayer-pluginy .

0
fwaechter