Domanda Come faccio a ottenere una miniatura del video di YouTube dall'API YouTube?


Se ho un URL di un video di YouTube, c'è un modo per usare PHP e cURL per ottenere la miniatura associata dall'API di YouTube?


2023
2018-01-14 23:34


origine


risposte:


Ogni video di YouTube ha 4 immagini generate. Sono formattati in modo prevedibile come segue:

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

Il primo nella lista è un'immagine a dimensione intera e altri sono immagini in miniatura. L'immagine di anteprima predefinita (ad esempio uno di 1.jpg, 2.jpg, 3.jpg) è:

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

Per la versione di alta qualità della miniatura usa una url simile a questa:

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

C'è anche una versione di media qualità della miniatura, usando una url simile all'HQ:

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

Per la versione a definizione standard della miniatura, utilizzare una url simile a questa:

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

Per la versione a risoluzione massima della miniatura usa una url simile a questa:

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

Tutti gli URL sopra indicati sono disponibili anche su http. Inoltre, il nome host leggermente più breve i3.ytimg.com funziona al posto di img.youtube.com negli URL di esempio sopra.

In alternativa, puoi usare il YouTube Data API (v3) per ottenere immagini in miniatura.


3875
2018-01-14 23:40



Puoi usare YouTube Data API per recuperare miniature video, didascalia, descrizione, valutazione, statistiche e altro. La versione 3 dell'API richiede una chiave *. Ottenere la chiave e creare a video: elenco richiesta:

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

Esempio di codice 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);

Produzione

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)
  }
}

* Non solo che hai bisogno di una chiave, ti potrebbero essere richieste informazioni di fatturazione in base al numero di richieste API che intendi realizzare. Tuttavia, pochi milioni di richieste al giorno sono gratuite.

Articolo di origine.


357
2018-01-21 09:58



Quello che Asaf ha detto è giusto. Tuttavia, non tutti i video di YouTube contengono tutte e nove le anteprime, ma ci sono sette miniature per ogni video. Loro sono:

(Le dimensioni dell'immagine dipendono dal video.)

  • Miniatura di sfondo del lettore (480x360 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Inizio anteprima (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • Miniatura centrale (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • Fine anteprima (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • Miniatura di alta qualità (480x360 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • Miniatura di media qualità (320x180 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • Miniatura di qualità normale (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

E inoltre, le prossime due miniature possono o non possono esistere. Per i video HQ loro esistono.

  • Anteprima definizione standard (640x480 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • Anteprima risoluzione massima (1920x1080 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

È possibile ottenere gli script JavaScript e PHP per recuperare le miniature e altro Informazioni di YouTube in

Utilizza anche lo strumento YouTube Video Information Generator per ottenere tutto il informazioni di un video di YouTube inviando un URL o ID video.


199
2017-12-12 11:17



Nell'API di YouTube V3 possiamo anche utilizzare questi URL per ottenere le miniature ... Sono classificati in base alla loro qualità.

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

E per la massima risoluzione ..

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

Un vantaggio di questi URL rispetto agli URL nella prima risposta è che questi URL non vengono bloccati dai firewall.


66
2017-08-23 10:23



Se si desidera l'immagine più grande di YouTube per un ID video specifico, l'URL dovrebbe essere simile al seguente:

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

Utilizzando l'API, puoi acquisire l'immagine di anteprima predefinita. Il codice semplice dovrebbe essere qualcosa del genere:

//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



Se vuoi eliminare le "barre nere" e farlo come fa YouTube, puoi utilizzare:

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

E se non puoi usare .webp estensione puoi farlo in questo modo:

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

Inoltre, se hai bisogno di usare la versione non scalata maxresdefault invece di mqdefault.

Nota: non sono sicuro delle proporzioni se prevedi di usarlo maxresdefault.


39
2018-06-08 11:59



Ho creato una funzione per recuperare solo immagini esistenti da 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



In YouTube Data API v3, puoi ottenere le miniature del video con Video-> Elenco funzione. A partire dal snippet.thumbnails. (chiave), puoi scegliere la miniatura di default, media o alta risoluzione e ottenere la sua larghezza, altezza e URL.

È anche possibile aggiornare le miniature con thumbnails-> Set funzionalità.

Per esempi, puoi controllare il Esempi di API YouTube progetto. (Quelli PHP.)


26
2018-05-28 17:45



Puoi ottenere il Ingresso video che contiene l'URL della miniatura del video. C'è un codice di esempio nel link. Oppure, se vuoi analizzare XML, ci sono informazioni Qui. L'XML restituito ha a media:thumbnail elemento, che contiene l'URL della 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