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?
Cada vídeo de YouTube tiene cuatro imágenes generadas. Están previsiblemente formateadas de la siguiente manera:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/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/<insert-youtube-video-id-here>/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/<insert-youtube-video-id-here>/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/<insert-youtube-video-id-here>/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/<insert-youtube-video-id-here>/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/<insert-youtube-video-id-here>/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.
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.
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.