• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ruitalia

Sacar o primeiro frame de um vídeo.

8 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora