1241 votos

¿Cómo obtengo una miniatura de vídeo de YouTube de la API de YouTube?

Si tengo una URL del video YouTube, ¿hay alguna forma de usar PHP y cURL para obtener la imagen asociada de la API de YouTube?

2565voto

Asaph Puntos 56989

Cada video de YouTube tiene 4 imágenes generadas. Son de forma predecible el siguiente formato:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg

El primero en la lista es una de tamaño completo de la imagen y otras son imágenes en miniatura. El defecto de las miniaturas de la imagen (ie. una de 1.jpg, 2.jpg, 3.jpg):

http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg

Por la alta calidad de la versión de la miniatura utilizar una url similar a esta:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg

Hay también un medio de la calidad de la versión de la miniatura, usando una url similar a la de la SEDE:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg

Para la definición estándar versión de la miniatura, use una dirección url similar a esta:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg

Para la resolución máxima de la versión de la miniatura utilizar una url similar a esta:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Todas las urls anteriores están disponibles a través de https. Solo cambio http a https en cualquiera de las urls anteriores. Además, el ligeramente más corto hostname i3.ytimg.com trabaja en lugar de img.youtube.com en el ejemplo de url de arriba.

Como alternativa, puede utilizar la API de Datos de YouTube (v3) o los mayores de YouTube API v2.0 para obtener imágenes en miniatura.

276voto

Salman A Puntos 60620

La dirección URL truco es indocumentado y por lo tanto poco fiables. Usted puede utilizar YouTube API de Datos para recuperar las miniaturas de vídeo, título, descripción, clasificación, estadísticas y mucho más. Probando la API toma 30 segundos o menos:

¿Qué hace de los datos devueltos por el API de aspecto

Abrir estas Url en su navegador para averiguar:

  1. http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&prettyprint=true
  2. http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&prettyprint=true&alt=json
  3. http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&prettyprint=true&alt=jsonc
  • gzDS-Kfd5XQ es el Identificador del vídeo.
  • Recomiendo la tercera, porque tiene la huella más pequeña

El uso de los datos en el lado del cliente usando JavaScript

<script type="text/javascript">
    function youtubeFeedCallback(json){
        document.write('<img src="' + json.data.thumbnail.sqDefault + '">');
    }
</script>
<script type="text/javascript" src="http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&alt=jsonc&callback=youtubeFeedCallback"></script>

El uso de los datos en el lado del cliente usando jQuery

$.getJSON("http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&alt=jsonc&callback=?", function(json){
    $("<img/>").attr("src", json.data.thumbnail.sqDefault).appendTo("body");
});

El uso de los datos en el lado del servidor con PHP

<?php
    $json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos/gzDS-Kfd5XQ?v=2&alt=jsonc"));
    echo '<img src="' . $json->data->thumbnail->sqDefault . '">';

Más detalles en Recuperar el Título, la Descripción y la vista en Miniatura de un Vídeo de YouTube Usando AJAX.

102voto

AGMG Puntos 378

¿Qué Asaf dijo que está a la derecha. Sin embargo, cada video de YouTube no contiene todos los nueve miniaturas. Pero hay siete miniaturas para cada vídeo. Ellos son:

(El tamaño de la imagen depende de vídeo.)

  • Jugador de Fondo de Miniaturas (480 x 360 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/0.jpg

  • Inicio de Miniaturas (120x90 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/1.jpg

  • Medio de Miniaturas (120x90 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/2.jpg

  • Final de Miniaturas (120x90 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/3.jpg

  • De alta Calidad en Miniatura (480 x 360 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/hqdefault.jpg

  • Calidad media en Miniatura (320x180 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/mqdefault.jpg

  • Calidad Normal Miniatura (120x90 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/default.jpg

Y además, en los próximos dos miniaturas pueden o no existir. Para videos de alta calidad existen.

  • De Definición estándar, Miniatura (640 x 480 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/sddefault.jpg

  • Resolución máxima de Miniaturas (1920x1080 píxeles)
    http://i1.ytimg.com/vi/HIrMIeN5ttE/maxresdefault.jpg

Usted puede obtener el JavaScript y scripts PHP para recuperar las miniaturas y otros Información de YouTube en

También el uso de la herramienta Video de YouTube Generador de Información para obtener todos los la información de un vídeo de YouTube mediante la presentación de una Dirección URL o el ID del vídeo.

39voto

Naren Puntos 862

En YouTube API V3 también podemos usar estas URLs para la obtención de imágenes en miniatura... Se clasifican de acuerdo con su calidad.

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/default.jpg -   default
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg - medium 
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg - high
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/sddefault.jpg - standard

Y para la máxima resolución...

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Una ventaja de estas URLs sobre las URLs en la primera respuesta es que estas URLs no conseguir bloqueadas por el cortafuegos.

29voto

PoorBoy Puntos 209

Si quieres la imagen más grande de YouTube para un ID de vídeo específico, entonces la URL debe ser algo como esto:

http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg

Usando la API, usted puede recoger la imagen en miniatura predeterminada. Simple código debería ser algo como esto:

//Grab the default thumbnail image
$attrs = $media->group->thumbnail[1]->attributes();
$thumbnail = $attrs['url'];
$thumbnail = substr($thumbnail, 0, -5);
$thumb1 = $thumbnail."default.jpg";

// Grab the third thumbnail image
$thumb2 = $thumbnail."2.jpg";

// Grab the fourth thumbnail image.
$thumb3 = $thumbnail."3.jpg";

// Using simple cURL to save it your server.
// You can extend the cURL below if you want it as fancy, just like
// the rest of the folks here.

$ch = curl_init ("$thumb1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata = curl_exec($ch);
curl_close($ch);

// Using fwrite to save the above
$fp = fopen("SomeLocationInReferenceToYourScript/AnyNameYouWant.jpg", 'w');

// Write the file
fwrite($fp, $rawdata);

// And then close it.
fclose($fp);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X