Pregunta ¿Cómo obtengo una miniatura de video de YouTube de la API de YouTube?


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


2023
2018-01-14 23:34


origen


Respuestas:


Cada video de YouTube tiene 4 imágenes generadas. Están predeciblemente formateados 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

El primero en la lista es una imagen de tamaño completo y otros son imágenes en miniatura. La imagen en miniatura predeterminada (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 miniatura, use 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, usando una URL similar a la 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, use una url similar a esta:

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

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

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

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

Alternativamente, puedes usar el API de datos de YouTube (v3) para obtener imágenes en miniatura.


3875
2018-01-14 23:40



Puedes usar API de datos de YouTube para recuperar miniaturas de videos, subtítulos, descripciones, clasificaciones, estadísticas y más. API versión 3 requiere una clave *. Obtenga la clave y cree un videos: lista solicitud:

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

Ejemplo de código PHP

$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 solo necesita una clave, es posible que se le pida información de facturación dependiendo de la cantidad de solicitudes de API que planee realizar. Sin embargo, pocos millones de solicitudes por día son gratis.

Artículo fuente.


357
2018-01-21 09:58



Lo que Asaph dijo es correcto. Sin embargo, no todos los videos de YouTube contienen las nueve miniaturas, pero hay siete miniaturas para cada video. Son:

(El tamaño de la imagen depende del video).

  • Miniatura de fondo del reproductor (480x360 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Miniatura de inicio (120x90 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • Miniatura media (120x90 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • Miniatura final (120x90 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • Miniatura de alta calidad (480x360 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • Miniatura de calidad media (320x180 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • Miniatura de calidad normal (120x90 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

Y, además, las siguientes dos miniaturas pueden existir o no. Para videos HQ Ellos existen.

  • Miniatura de definición estándar (640x480 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • Máxima resolución en miniatura (1920x1080 píxeles)
    https://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

Puede obtener los scripts de JavaScript y PHP para recuperar miniaturas y otros Información de YouTube en

Usa también la herramienta Generador de información de video de YouTube para obtener todo el información de un video de YouTube enviando un URL o video ID.


199
2017-12-12 11:17



En YouTube API V3 también podemos usar estas URL para obtener miniaturas ... Se clasifican según 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 resolución máxima ...

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

Una ventaja de estas URL sobre las URL en la primera respuesta es que estos URL no son bloqueados por los firewalls.


66
2017-08-23 10:23



Si desea la imagen más grande de YouTube para una identificación de video específica, entonces la URL debería ser algo como esto:

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

Utilizando la API, puedes elegir una imagen en miniatura predeterminada. El código simple 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);

46
2017-12-22 05:44



Si quieres deshacerte de las "barras negras" y hacerlo como lo hace YouTube, puedes usar:

https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp

Y si no puedes usar .webp extensión puede hacerlo así:

https://i.ytimg.com/vi/<video id>/mqdefault.jpg

Además, si necesita la versión sin escalar, use maxresdefault en lugar de mqdefault.

Nota: no estoy seguro sobre la relación de aspecto si planea usar maxresdefault.


39
2018-06-08 11:59



Hice una función para obtener solo imágenes existentes de YouTube

function youtube_image($id) {
    $resolution = array (
        'maxresdefault',
        'sddefault',
        'mqdefault',
        'hqdefault',
        'default'
    );

    for ($x = 0; $x < sizeof($resolution); $x++) {
        $url = '//img.youtube.com/vi/' . $id . '/' . $resolution[$x] . '.jpg';
        if (get_headers($url)[0] == 'HTTP/1.0 200 OK') {
            break;
        }
    }
    return $url;
}

27
2017-12-18 10:29



En YouTube Data API v3, puedes obtener las miniaturas del video con videos-> lista función. De snippet.thumbnails. (clave), puede elegir la miniatura predeterminada, de resolución media o alta, y obtener su ancho, alto y URL.

También puede actualizar miniaturas con el miniaturas-> establecer funcionalidad.

Por ejemplo, puedes ver el Muestras de la API de YouTube proyecto. (PHP.)


26
2018-05-28 17:45



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


25
2018-01-14 23:40



// Get image form video URL
$url = $video['video_url'];

$urls = parse_url($url);

//Expect the URL to be http://youtu.be/abcd, where abcd is the video ID
if ($urls['host'] == 'youtu.be') :

    $imgPath = ltrim($urls['path'],'/');

//Expect the URL to be http://www.youtube.com/embed/abcd
elseif (strpos($urls['path'],'embed') == 1) :

    $imgPath = end(explode('/',$urls['path']));

//Expect the URL to be abcd only
elseif (strpos($url,'/') === false):

    $imgPath = $url;

//Expect the URL to be http://www.youtube.com/watch?v=abcd
else :

    parse_str($urls['query']);

    $imgPath = $v;

endif;

20
2017-07-04 05:10