Capturando imagens de um vídeo do YouTube ou Vimeo com o PHP

Em aplicações sociais é uma boa ideia incluir ifnromações sobre o contexto como também screnshot de algum vídeo, isso deixa seu site mais atraente para o usuário.

Com um script bem simples é possível obter a thumbnail de um vídeo do YouTube ou Vimeo através da URL.

Logo abaixo você vê o snippet que pode ser utilizado em qualquer uma de suas aplicações.

function video_imagem($url){
    $url_imagem = parse_url($url);
    if($url_imagem['host'] == 'www.youtube.com'
|| $url_imagem['host'] == 'youtube.com'){
        $array = explode("&", $url_imagem['query']);
        return "http://img.youtube.com/vi/"
.substr($array[0], 2)."/0.jpg";
    } else if($url_imagem['host'] == 
'www.vimeo.com' || $url_imagem['host'] == 'vimeo.com'){
        $hash = unserialize(file_get_contents("http://vimeo.com/
api/v2/video/".substr($url_imagem['path'], 1).".php"));
        return $hash[0]["thumbnail_small"];
    }
}

Você vai perceber que esse código possui um trecho determinar se a url passada pela função é de um vídeo do YouTube ou Vimeo e os cálculos necessários para trabalhar com ambos.

Seria interessante que você adicionasse uma contenção, caso o link não seja válido.

Para o YouTube
Você pode mudar a seguinte linha no script para retornar um tamanho diferente de imagem.

return "http://img.youtube.com/vi/".substr($array[0], 2)."/0.jpg";

Existem variações de thumbnail disponíveis baseado nas miniaturas escolhidas pelo usuário quando enviou o vídeo. Você pode mudar o número para conseguir uma thumb diferente. Incrementando o número no final da imagem, você verá a próxima thumb disponível.

return "http://img.youtube.com/vi/".substr($array[0], 2)."/default.jpg";
 // Pequena - padrão
return "http://img.youtube.com/vi/".substr($array[0], 2)."/0.jpg";
 // Grande - padrão
return "http://img.youtube.com/vi/".substr($array[0], 2)."/1.jpg";
return "http://img.youtube.com/vi/".substr($array[0], 2)."/2.jpg";
return "http://img.youtube.com/vi/".substr($array[0], 2)."/3.jpg";

Para o Vimeo
Você pode alterar a seguinte linha no script para retornar um tamanho de imagem diferente do Vimeo:

return $hash[0]["thumbnail_small"];

As variações são:

return $hash[0]["thumbnail_small"];
return $hash[0]["thumbnail_medium"];
return $hash[0]["thumbnail_large"];

As APIs de YouTube e Vimeo possuem muito mais informações que você pode capturar, incluindo o avatar de usuários e outras coisinhas bacanas. Tomara que esse pequeno script ajude a trazer um contexto mais bacana para os seus usuários ao invés de um simples link estático.

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Tumblr Posterous