¿Cómo obtener una imagen estática de video de youtube usando javascript?
Pregunta
En las galerías de video, YouTube muestra imágenes de los videos en lugar de Flash Player. Si hace clic en la imagen, será redirigido a una página donde se encuentra el reproductor de video flash. Quiero mostrar las primeras imágenes estáticas.
¿Cómo puedo hacer eso programáticamente?
Solución
Para Javascript: (supongo que lo etiquetó como flash porque Youtube es un reproductor de video flash)
function getScreen( url, size )
{
if(url === null){ return ""; }
size = (size === null) ? "big" : size;
var vid;
var results;
results = url.match("[\\?&]v=([^&#]*)");
vid = ( results === null ) ? url : results[1];
if(size == "small"){
return "http://img.youtube.com/vi/"+vid+"/2.jpg";
}else {
return "http://img.youtube.com/vi/"+vid+"/0.jpg";
}
}
Encontrado aquí .
Al salir de esta función, básicamente solo tiene que tomar el parámetro v = ladlfasd y ponerlo en esta url:
http://img.youtube.com/vi/(v= parameter)/2.jpg
Donde es 2.jpg para pequeño, 0.jpg para grande
Otros consejos
function getYoutubeThumbnail($url)
{
if(preg_match('![?&]{1}v=([^&]+)!', $url . '&', $m))
{
$videoid = $m[1];
}
else if(preg_match('~/v/([0-9a-z_]+)~i', $url, $m))
{
$videoid = $m[1];
}
$youtube_thumbnail = 'http://img.youtube.com/vi/' . $videoid . '/default.jpg';
$c = curl_init();
$url = trim($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $url);
$contents = curl_exec($c);
curl_close($c);
$feed = "http://gdata.youtube.com/feeds/api/videos/".$videoid;
$newInfo = trim(@file_get_contents($feed));
preg_match('/<media:title(.*?)<\/media:title>/', $newInfo, $result);
$title = strip_tags($result[0]);
preg_match('/<media:keywords(.*?)<\/media:keywords>/', $newInfo, $result);
$desc = strip_tags(str_replace(",", "", $result[0]));
//embed path
$embed_path = "http://www.youtube.com/embed/".$videoid;
$youtube_info = array('videoid' => $videoid,'title' => $title, 'description' => $desc,'youtube_thumbnail' => $youtube_thumbnail,'embed_path' => $embed_path) ;
return $youtube_info;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow