Jump to content
ruitalia

Sacar o primeiro frame de um vídeo.

Recommended Posts

ruitalia

Caros colegas programadores, quero deixar aqui uma questão muito pretinente, que penso não ter solução, mas de qualquer modo aqui vai:

Tenho um site em que preciso dispor em thumbail uma imagem do video do link, não encontro maneira de o fazer automáticamente, faço isso para as fotos (criar uma miniatura) mas para os videos está complicado, há alguma possibilidade disso ser feito?

Cmprts!

:P


Azores

Share this post


Link to post
Share on other sites
ruitalia

Uhm, tive a dar uma olhada... mas isso é uma extenção do php, ou seja, teria de instalar isso no servidor?


Azores

Share this post


Link to post
Share on other sites
ruitalia

Desculpem desenterrar este tópico iniciado por mim há uns anos.

Mas há novidades sobre o assunto?

É que cada vez mais se utilizam videos, e são representados por uma imagem contida nele para representá-lo (por exemplo o youtube utiliza o frame do meio).


Azores

Share this post


Link to post
Share on other sites
pedrotuga

ehehe... sim senhor.. thread digging mas pelo mesmo utilizador que a inciou, sempre voltaste :)

ora bem... em relação a : "se calhar não é possivel"

Não se pode fazer tal afirmação quando se trata de programação. Programação é, em grande parte dos casos, inventar uma solução para uma coisa até entao impossivel.

Epa... seguindo o link que te deram para o php-ffmpeg, é muito simples:

é só fazeres uma chamada ao método getFrame()

$movie->getFrame([integer framenumber])

há que ler a documentação. :)

Share this post


Link to post
Share on other sites
scroll

o pedrotuga está correcto, e aqui deixo-te um exemplo da utilização do ffmpeg:


$frame = 15;

$mov = new ffmpeg_movie('media/videos/video8.flv');
$img = 'imagens/videothumb/8.jpg';

$ff_frame = $mov->getFrame($frame);

if ($ff_frame) {
    $gd_image = $ff_frame->toGDImage();
    if ($gd_image) {
        imagejpeg($gd_image, $img);
        imagedestroy($gd_image);
        echo '<center><img src="'.$img.'" border="1" alt="Captura" /></center>';
    }
}

repara que o exemplo têm valores fixos, mas podes utilizar como é lógico variáveis ou um randomizer qq para os nomes de output, como este:

<?php
function mKey($len = 6, $type = 'ALNUM')
{
    $alpha = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
                   'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');                   
    $ALPHA = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                     'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');            
    $num = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
    $keyVals = array();
    $key = array();   
   
    switch ($type)
    {
        case 'lower' :
            $keyVals = $alpha;
            break;
        case 'upper' :
            $keyVals = $ALPHA;
            break;
        case 'numeric' :
            $keyVals = $num;
            break;
        case 'ALPHA' :
            $keyVals = array_merge($alpha, $ALPHA);
            break;
        case 'ALNUM' :
            $keyVals = array_merge($alpha, $ALPHA, $num);
            break;
    }
   
    for($i = 0; $i <= $len-1; $i++)
    {
        $r = rand(0,count($keyVals)-1);
        $key[$i] = $keyVals[$r];
    }
   
    return join("", $key);
} 

$nome_aleatorio=mKey();
$data=date('Y-m-d');
$frame = 20;

$obj='videos/'.$_POST['video1'];

$mov = new ffmpeg_movie($obj);
$img = 'images/videothumb/'.$nome_aleatorio.'.jpg';

$ff_frame = $mov->getFrame($frame);

if ($ff_frame) {
    $gd_image = $ff_frame->toGDImage();
    if ($gd_image) {
        imagejpeg($gd_image, $img);
        imagedestroy($gd_image);
        echo '<center><img src="'.$img.'" border="1" alt="Thumbnail" /></center>';
	echo 'FILE: ' .$obj .'</br>   -    Thumb: ' .$img;
    }
}

?> 

abraço,

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.