¿Cómo puedo obtener una miniatura de un vídeo de YouTube desde la API de YouTube?

Si tengo una URL de vídeo de YouTube, ¿hay alguna manera de utilizar PHP y cURL para obtener la miniatura asociada desde la API de YouTube?

Solución

Cada vídeo de YouTube tiene cuatro imágenes generadas. Están previsiblemente formateadas de la siguiente manera:

https://img.youtube.com/vi//0.jpg
https://img.youtube.com/vi//1.jpg
https://img.youtube.com/vi//2.jpg
https://img.youtube.com/vi//3.jpg

La primera de la lista es una imagen a tamaño completo y las demás son imágenes en miniatura. La imagen en miniatura por defecto (es decir, una de 1.jpg, 2.jpg, 3.jpg) es:

https://img.youtube.com/vi//default.jpg

Para la versión de alta calidad de la imagen en miniatura utilice una URL similar a esta:

https://img.youtube.com/vi//hqdefault.jpg

También hay una versión de calidad media de la miniatura, utilizando una URL similar a la de HQ:

https://img.youtube.com/vi//mqdefault.jpg

Para la versión de definición estándar de la miniatura, utilice una URL similar a esta:

https://img.youtube.com/vi//sddefault.jpg

Para la versión de máxima resolución de la miniatura, utilice una URL similar a esta

https://img.youtube.com/vi//maxresdefault.jpg

Todas las URLs anteriores también están disponibles a través de HTTP. Además, el nombre de host ligeramente más corto i3.ytimg.com funciona en lugar de img.youtube.com en las URL de ejemplo anteriores.

También puedes utilizar la API de datos de YouTube (v3) para obtener imágenes en miniatura.

Comentarios (27)

Puedes utilizar YouTube Data API para recuperar las miniaturas de los vídeos, los pies de foto, la descripción, la clasificación, las estadísticas y mucho más. La versión 3 de la API requiere una clave*. Obtén la clave y crea una solicitud videos: list:

https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID

Código PHP de ejemplo

$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40");
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);

Salida

object(stdClass)#5 (5) {
  ["default"]=>
  object(stdClass)#6 (3) {
    ["url"]=>
    string(46) "https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg"
    ["width"]=>
    int(120)
    ["height"]=>
    int(90)
  }
  ["medium"]=>
  object(stdClass)#7 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg"
    ["width"]=>
    int(320)
    ["height"]=>
    int(180)
  }
  ["high"]=>
  object(stdClass)#8 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg"
    ["width"]=>
    int(480)
    ["height"]=>
    int(360)
  }
  ["standard"]=>
  object(stdClass)#9 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg"
    ["width"]=>
    int(640)
    ["height"]=>
    int(480)
  }
  ["maxres"]=>
  object(stdClass)#10 (3) {
    ["url"]=>
    string(52) "https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg"
    ["width"]=>
    int(1280)
    ["height"]=>
    int(720)
  }
}
  • No sólo se necesita una clave, sino que se le puede pedir información de facturación en función del número de solicitudes de la API que piense hacer. Sin embargo, unos pocos millones de peticiones al día son gratuitos.

Artículo de origen.

Comentarios (6)

Puedes obtener la Entrada de vídeo que contiene la URL de la miniatura del vídeo. Hay un código de ejemplo en el enlace. O, si quieres analizar el XML, hay información aquí. El XML devuelto tiene un elemento media:thumbnail, que contiene la URL de la miniatura.

Comentarios (1)