Bagaimana cara mendapatkan thumbnail video YouTube dari API YouTube?

2400

Jika saya memiliki URL video YouTube, apakah ada cara untuk menggunakan PHP dan cURL untuk mendapatkan thumbnail terkait dari API YouTube?

Ryan
sumber
Berikut adalah beberapa fungsi PHP yang saya buat untuk mendapatkan thumbnail terbaik yang tersedia dari metode URL tanpa ping API, berdasarkan dari banyak jawaban bagus di halaman ini: gist.github.com/squarecandy/30ec9f6779c0e8cdf12e337c665d96c5
squarecandy

Jawaban:

4613

Setiap video YouTube memiliki empat gambar yang dihasilkan. Mereka diprediksi diformat sebagai berikut:

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

Yang pertama dalam daftar adalah gambar ukuran penuh dan yang lainnya adalah gambar thumbnail. Default thumbnail image (yaitu, satu dari 1.jpg, 2.jpg, 3.jpg) adalah:

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

Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:

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

Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan HQ:

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

Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:

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

Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:

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

Semua URL di atas juga tersedia melalui HTTP. Selain itu, nama host yang sedikit lebih pendek i3.ytimg.commenggantikan img.youtube.comURL contoh di atas.

Atau, Anda dapat menggunakan API Data YouTube (v3) untuk mendapatkan gambar mini.

Asaf
sumber
27
Untuk berjaga-jaga jika ada orang lain yang membuat kesalahan bodoh ini - Anda tidak bisa menggunakan http://www.img.youtube.com, hanyahttp://img.youtube.com
Ciaran Phillips
36
@NickG mqdefault16: 9
tomtastico
57
Apakah ini tempat yang secara resmi didokumentasikan?
bjunix
14
Thumbnail resolusi lebih tinggi tidak dijamin ada.
Salman A
63
@ clami219 itu salah juga - jelas bekerja (2015-04): i.ytimg.com/vi_webp/EhjdWfxjuHA/sddefault.webp , kebenaran: sddefaultdan maxresdefaultTIDAK SELALU TERSEDIA beberapa video memilikinya meskipun ....
jave.web
398

Anda dapat menggunakan API Data YouTube untuk mengambil thumbnail video, caption, deskripsi, rating, statistik, dan lainnya. API versi 3 membutuhkan kunci *. Dapatkan kunci dan buat video: daftar permintaan:

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

Contoh Kode 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);

Keluaran

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

* Tidak hanya Anda memerlukan kunci, Anda mungkin diminta untuk informasi penagihan tergantung pada jumlah permintaan API yang Anda rencanakan. Namun, beberapa juta permintaan per hari gratis.

Artikel sumber .

Salman A
sumber
6
FYI: saya tidak mengubah kode agar sesuai dengan struktur JSON baru. Kode di getJSON Anda salah. Anda menggunakan jsoncalih-alih jsonuntuk getJSON. Gagal karena struktur JSON Anda yang salah.
mauris
5
Hanya contoh pertama yang bisa digunakan jsonc. Contoh jQuery dan PHP HARUS digunakan json. Dan saya telah memperbarui kode agar sesuai dengan struktur JSON baru. Saya menggunakan kode sekarang dan itu bekerja LANGSUNG. jadi jangan katakan itu tidak berfungsi tanpa membaca perubahan. Terima kasih!
mauris
7
Contoh jQuery dan PHP HARUS menggunakan json ... bisakah Anda memberikan referensi? Selain itu, meminta nomor versi API tertentu ( v=2) menangani perubahan API.
Salman A
4
Panggilan gdata tidak mengembalikan apakah maxresdefault.jpg tersedia untuk video yang tersedia, hanya mq / hq / sd.
Aaron
2
API v3 SANGAT buruk didokumentasikan. Mereka memberi Anda kode sampel tetapi bagian "referensi" sangat detail. Beberapa hal yang seharusnya relatif "jelas" tampaknya membutuhkan penyelesaian yang ekstrem.
CashCow
256

Apa yang dikatakan Asaf benar. Namun, tidak setiap video YouTube berisi sembilan thumbnail. Juga, ukuran gambar thumbnail tergantung pada video (angka-angka di bawah ini didasarkan pada satu).

Ada tujuh thumbnail yang dijamin ada:

| Thumbnail Name      | Size (px) | URL                                              |
|---------------------|-----------|--------------------------------------------------|
| Player Background   | 480x360   | https://i1.ytimg.com/vi/<VIDEO ID>/0.jpg         |
| Start               | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/1.jpg         |
| Middle              | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/2.jpg         |
| End                 | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/3.jpg         |
| High Quality        | 480x360   | https://i1.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg |
| Medium Quality      | 320x180   | https://i1.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg |
| Normal Quality      | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/default.jpg   |

Selain itu, dua thumbnail lain mungkin ada atau tidak ada. Kehadiran mereka mungkin didasarkan pada apakah video tersebut berkualitas tinggi.

| Thumbnail Name      | Size (px) | URL                                                  |
|---------------------|-----------|------------------------------------------------------|
| Standard Definition | 640x480   | https://i1.ytimg.com/vi/<VIDEO ID>/sddefault.jpg     |
| Maximum Resolution  | 1920x1080 | https://i1.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg |

Anda dapat menemukan skrip JavaScript dan PHP untuk mengambil thumbnail dan informasi YouTube lainnya di:

Anda juga dapat menggunakan alat Pembuat Informasi Video YouTube untuk mendapatkan semua informasi tentang video YouTube dengan mengirimkan URL atau id video.

AGMG
sumber
5
Anda juga dapat mencapai hasil yang sama dengan tautan youtube resmi img.youtube.com/vi/mJ8tq8AnNis/mqdefault.jpg di mana mJ8tq8AnNis adalah id video
Ragaisis
4
Terkadang yang tertentu tidak ada - i1.ytimg.com/vi/r5R8gSgedh4/maxresdefault.jpg palsu meskipun i1.ytimg.com/vi/r5R8gSgedh4/0.jpg ok misalnya.
NoBugs
Terima kasih telah memposting ini. Apakah Anda memiliki sumber untuk data ini? Itu benar, tetapi saya ingin tautan ke sesuatu dari Youtube / Google tentang ini dan tidak dapat menemukannya.
Jonathan Vanasco
@ JonathanVanasco, maaf. Jika Anda maksud sumber resmi untuk konten yang tepat, saya tidak tahu. Dan saya tidak berpikir ada tujuan menerbitkan sesuatu seperti itu dari sudut pandang mereka.
AGMG
4
Alat "Pembuat Informasi Video YouTube" saat ini tidak berfungsi. Pertimbangkan untuk mengedit jawabannya.
giovannipds
74

Di YouTube API V3 kami juga dapat menggunakan URL ini untuk mendapatkan thumbnail ... Mereka diklasifikasikan berdasarkan kualitasnya.

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

Dan untuk resolusi maksimum ..

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

Satu keuntungan dari URL ini dibandingkan dengan URL di jawaban pertama adalah bahwa URL ini tidak diblokir oleh firewall.

Naren
sumber
3
Apakah gambar-gambar ini seharusnya ditempatkan dalam tag img dan seharusnya hanya berfungsi karena saya mencoba memasukkan tautan dengan id video youtube yang tepat dan meletakkannya di dalam tag img tetapi saya tetap mendapatkan 404
Lion789
5
@ Lion789 URL ini berfungsi dengan baik ketika ditempatkan di tag img .. Masalahnya mungkin id video yang salah atau resolusi yang diminta mungkin tidak tersedia tetapi Anda tidak akan mendapatkan 404 dengan kesalahan ini. Silakan periksa url dari tag img.
Naren
2
Apakah dikonfirmasi bahwa url akan tetap berfungsi setelah API v2 akan dihentikan?
Daniele B
1
@DanieleB URL ini masih berfungsi. Apakah Anda tahu cara memeriksa apakah URL ini akan berfungsi setelah API v2?
Naren
53

Jika Anda menginginkan gambar terbesar dari YouTube untuk ID video tertentu, URLnya harus seperti ini:

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

Dengan menggunakan API, Anda dapat mengambil gambar mini default. Kode sederhana harus seperti ini:

//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);
Anak miskin
sumber
2
Saya menemukan contoh di mana 0.jpg memiliki resolusi 480x360, sementara maxresdefault.jpg memiliki 1280x720
Nico Haase
45

Jika Anda ingin menyingkirkan "bilah hitam" dan melakukannya seperti YouTube, Anda dapat menggunakan:

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

Dan jika Anda tidak dapat menggunakan .webpekstensi file Anda dapat melakukannya seperti ini:

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

Juga, jika Anda membutuhkan versi yang tidak berskala, gunakan maxresdefaultsebagai gantimqdefault .

Catatan: Saya tidak yakin tentang rasio aspek jika Anda berencana untuk menggunakan maxresdefault.

LuTz
sumber
2
Ini tidak tersedia untuk banyak video. Misalnya: i.ytimg.com/vi_webp/mJ8tq8AnNis/mqdefault.webp
NickG
2
@NickG: Ini berfungsi jika Anda menghapus _webpdan mengubah ekstensi menjadi .jpg. Contoh kerja: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , saya tidak yakin tentang rasio aspek.
LuTz
34

Saya membuat fungsi untuk hanya mengambil gambar yang ada dari 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;
}
Henrik Albrechtsson
sumber
32

Di YouTube Data API v3 , Anda bisa mendapatkan thumbnail video dengan fungsi daftar video-> . Dari snippet.thumbnails (key) , Anda dapat memilih thumbnail default, sedang atau tinggi, dan mendapatkan lebar, tinggi, dan URL-nya.

Anda juga dapat memperbarui thumbnail dengan thumbnail-> mengatur fungsionalitas.

Sebagai contoh, Anda dapat memeriksa proyek Sampel API YouTube . (Yang PHP .)

Ibrahim Ulukaya
sumber
1
Saya kira ini adalah cara yang tepat untuk melakukannya karena berasal dari anggota hubungan Google Dev untuk api youtube
Adonis K. Kakoulidis
31

Anda bisa mendapatkan Entri Video yang berisi URL ke gambar mini video. Ada contoh kode di tautan. Atau, jika Anda ingin mem-parsing XML, ada informasi di sini . XML yang dikembalikan memiliki media:thumbnailelemen, yang berisi URL gambar mini.

keyboardP
sumber
2
Saya tidak bisa mengeluarkannya menggunakan simpleXML. Cukup sulit!
Aditya MP
25
// 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;
Mahendra Tyagi
sumber
2
ini solusi yang buruk! mengapa tidak menggunakan Youtube api v3?
mpgn
19

YouTube dimiliki oleh Google dan Google suka memiliki jumlah gambar yang masuk akal untuk ukuran layar yang berbeda, sehingga gambarnya disimpan dalam ukuran yang berbeda. Berikut ini adalah contoh bagaimana thumbnail Anda akan seperti:

Thumbnail kualitas rendah:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg

Thumbnail kualitas sedang:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg

Thumbnail kualitas tinggi:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg

Thumbnail kualitas maksimum:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
evader kehidupan
sumber
16

API YouTube versi 3 dan berjalan dalam 2 menit

Jika semua yang ingin Anda lakukan adalah mencari YouTube dan mendapatkan properti terkait:

  1. Dapatkan API publik - Tautan ini memberikan arahan yang baik

  2. Gunakan string kueri di bawah ini. Permintaan pencarian (dilambangkan dengan q = ) dalam string URL adalah stackoverflow untuk tujuan contoh. YouTube kemudian akan mengirim Anda kembali balasan JSON di mana Anda kemudian dapat menguraikan Thumbnail, Cuplikan, Penulis, dll.

    https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&maxResults=50&q=stackoverflow&key=YOUR_API_KEY_HERE

Chris
sumber
16

Alternatif lain yang baik adalah menggunakan oEmbed API yang didukung oleh YouTube.

Anda cukup menambahkan URL YouTube ke URL oEmbed dan Anda akan menerima JSON termasuk thumbnail dan kode HTML untuk disematkan.

Contoh:

http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ

Akan memberi Anda:

{
  "height":270,
  "width":480,
  "title":"example video for 2020",
  "thumbnail_width":480,
  "html":"...",
  "thumbnail_height":360,
  "version":"1.0",
  "provider_name":"YouTube",
  "author_url":"https:\/\/www.youtube.com\/channel\/UCza6VSQUzCON- AzlsrOLwaA",
  "thumbnail_url":"https:\/\/i.ytimg.com\/vi\/xUeJdWYdMmQ\/hqdefault.jpg",
  "author_name":"Pokics",
  "provider_url":"https:\/\/www.youtube.com\/",
  "type":"video"
}

Baca dokumentasi untuk informasi lebih lanjut .

Andresch Serj
sumber
15

Menggunakan:

https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100&regionCode=us&key=**Your YouTube ID**

Di atas adalah tautannya. Dengan itu, Anda dapat menemukan karakteristik video YouTube. Setelah menemukan karakteristik, Anda bisa mendapatkan video dari kategori yang dipilih. Setelah itu, Anda dapat menemukan gambar video yang dipilih menggunakan jawaban Asaph .

Coba pendekatan di atas dan Anda dapat menguraikan semuanya dari API YouTube .

Nikh1414
sumber
14

Saya telah menggunakan thumbnail YouTube dengan cara ini:

$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_'  . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));

Ingat, YouTube mencegah untuk memasukkan gambar langsung dari server mereka.

blacksunshineCoding
sumber
13

Hanya untuk menambah / memperluas solusi yang diberikan, saya merasa perlu untuk dicatat bahwa, karena saya memiliki masalah ini sendiri, seseorang sebenarnya dapat mengambil beberapa konten video YouTube, dalam hal ini, thumbnail, dengan satu permintaan HTTP:

Menggunakan Klien Istirahat, dalam hal ini, HTTPFUL, Anda dapat melakukan sesuatu seperti ini:

<?php
header("Content-type", "application/json");

//download the httpfull.phar file from http://phphttpclient.com
include("httpful.phar");

$youtubeVidIds= array("nL-rk4bgJWU", "__kupr7KQos", "UCSynl4WbLQ", "joPjqEGJGqU", "PBwEBjX3D3Q");


$response = \Httpful\Request::get("https://www.googleapis.com/youtube/v3/videos?key=YourAPIKey4&part=snippet&id=".implode (",",$youtubeVidIds)."")

->send();

print ($response);

?>
Hlawuleka MAS
sumber
13

API Data YouTube

YouTube memberi kami empat gambar yang dihasilkan untuk setiap video melalui API Data (v3), misalnya,

  1. https://i.ytimg.com/vi/V_zwalcR8DU/maxresdefault.jpg

  2. https://i.ytimg.com/vi/V_zwalcR8DU/sddefault.jpg

  3. https://i.ytimg.com/vi/V_zwalcR8DU/hqdefault.jpg

  4. https://i.ytimg.com/vi/V_zwalcR8DU/mqdefault.jpg

Mendapatkan akses ke gambar melalui API

  1. Pertama-tama dapatkan kunci API publik Anda di Google API Console .
  2. Sesuai referensi gambar mini YouTube dalam dokumentasi API , Anda perlu mengakses sumber daya di snippet.thumbnails.
  3. Sesuai ini, Anda perlu untuk frasa URL Anda seperti ini -

    www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`

Sekarang ubah ID video dan kunci API Anda ke id video dan api-key Anda masing-masing dan responsnya akan berupa output JSON yang memberi Anda empat tautan dalam thumbnail dari variabel snippet (jika semua tersedia).

Daksh Miglani
sumber
13

Anda bisa mendapatkan ID video dari url video YouTube menggunakan parse_url , parse_str dan kemudian masukkan ke url prediktif untuk gambar. Terima kasih ke YouTube untuk URL prediktifnya

$videoUrl = "https://www.youtube.com/watch?v=8zy7wGbQgfw";
parse_str( parse_url( $videoUrl, PHP_URL_QUERY ), $my_array_of_vars );
$ytID = $my_array_of_vars['v']; //gets video ID

print "https://img.youtube.com/vi/$ytID/maxresdefault.jpg";
print "https://img.youtube.com/vi/$ytID/mqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/hqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/sddefault.jpg";
print "https://img.youtube.com/vi/$ytID/default.jpg";

Anda dapat menggunakan alat ini untuk menghasilkan thumbnail YouTube

https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails

Rinto George
sumber
11

Fungsi PHP sederhana yang saya buat untuk thumbnail YouTube dan tipenya

  • standar
  • Kerusakan bawaan
  • mqdefault
  • sddefault
  • maxresdefault

 

function get_youtube_thumb($link,$type){

    $video_id = explode("?v=", $link);

    if (empty($video_id[1])){
        $video_id = explode("/v/", $link);
        $video_id = explode("&", $video_id[1]);
        $video_id = $video_id[0];
    }
    $thumb_link = "";

    if($type == 'default'   || $type == 'hqdefault' ||
       $type == 'mqdefault' || $type == 'sddefault' ||
       $type == 'maxresdefault'){

        $thumb_link = 'http://img.youtube.com/vi/'.$video_id.'/'.$type.'.jpg';

    }elseif($type == "id"){
        $thumb_link = $video_id;
    }
    return $thumb_link;}
Arun Yokesh
sumber
10

Jika Anda menggunakan API publik, cara terbaik untuk melakukannya adalah menggunakan ifpernyataan.

Jika video bersifat publik atau tidak terdaftar, Anda mengatur thumbnail menggunakan metode URL. Jika video bersifat pribadi, Anda menggunakan API untuk mendapatkan thumbnail.

<?php
    if($video_status == 'unlisted'){
        $video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
        $video_status = '<i class="fa fa-lock"></i>&nbsp;Unlisted';
    }
    elseif($video_status == 'public'){
        $video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
        $video_status = '<i class="fa fa-eye"></i>&nbsp;Public';
    }
    elseif($video_status == 'private'){
        $video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
        $video_status = '<i class="fa fa-lock"></i>&nbsp;Private';
    }
Harvey Connor
sumber
8

Saya pikir mereka banyak jawaban untuk thumbnail, tetapi saya ingin menambahkan beberapa URL lain untuk mendapatkan thumbnail YouTube dengan sangat mudah. Saya hanya mengambil beberapa teks dari jawaban Asaf. Berikut ini beberapa URL untuk mendapatkan thumbnail YouTube:

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

Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:

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

Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan kualitas tinggi:

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

Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:

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

Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Kumar
sumber
6
    function get_video_thumbnail( $src ) {
            $url_pieces = explode('/', $src);
            if( $url_pieces[2] == 'dai.ly'){
                $id = $url_pieces[3];
                $hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
                $thumbnail = $hash['thumbnail_large_url'];
            }else if($url_pieces[2] == 'www.dailymotion.com'){
                $id = $url_pieces[4];
                $hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
                $thumbnail = $hash['thumbnail_large_url'];
            }else if ( $url_pieces[2] == 'vimeo.com' ) { // If Vimeo
                $id = $url_pieces[3];
                $hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
                $thumbnail = $hash[0]['thumbnail_large'];
            } elseif ( $url_pieces[2] == 'youtu.be' ) { // If Youtube
                $extract_id = explode('?', $url_pieces[3]);
                $id = $extract_id[0];
                $thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
            }else if ( $url_pieces[2] == 'player.vimeo.com' ) { // If Vimeo
                $id = $url_pieces[4];
                $hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
                $thumbnail = $hash[0]['thumbnail_large'];
            } elseif ( $url_pieces[2] == 'www.youtube.com' ) { // If Youtube
                $extract_id = explode('=', $url_pieces[3]);
                $id = $extract_id[1];
                $thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
            } else{
                $thumbnail = tim_thumb_default_image('video-icon.png', null, 147, 252);
            }
            return $thumbnail;
        }

get_video_thumbnail('https://vimeo.com/154618727');
get_video_thumbnail('https://www.youtube.com/watch?v=SwU0I7_5Cmc');
get_video_thumbnail('https://youtu.be/pbzIfnekjtM');
get_video_thumbnail('http://www.dailymotion.com/video/x5thjyz');
Nimesh Vagadiya
sumber
5

Inilah jawaban teratas yang dioptimalkan untuk penggunaan manual. Token ID video tanpa pemisah memungkinkan Anda memilih dengan klik dua kali.

Setiap video YouTube memiliki empat gambar yang dihasilkan. Mereka diprediksi diformat sebagai berikut:

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

Yang pertama dalam daftar adalah gambar ukuran penuh dan yang lainnya adalah gambar thumbnail. (. Yaitu satu dari default thumbnail image 1.jpg, 2.jpg, 3.jpg) adalah:

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

Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:

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

Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan HQ:

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

Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:

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

Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:

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

Semua URL di atas juga tersedia melalui HTTP. Selain itu, nama host yang sedikit lebih pendek i3.ytimg.commenggantikan img.youtube.comURL contoh di atas.

Atau, Anda dapat menggunakan API Data YouTube (v3) untuk mendapatkan gambar mini.


sumber
4

Metode 1:

Anda dapat menemukan semua informasi untuk video YouTube dengan halaman JSON yang bahkan memiliki "thumbnail_url", http://www.youtube.com/oembed?format=json&url= {URL video Anda ada di sini}

Seperti tampilan URL final + kode uji PHP

$data = file_get_contents("https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=_7s-6V_0nwA");
$json = json_decode($data);
var_dump($json);

Keluaran

object(stdClass)[1]
  public 'width' => int 480
  public 'version' => string '1.0' (length=3)
  public 'thumbnail_width' => int 480
  public 'title' => string 'how to reminder in window as display message' (length=44)
  public 'provider_url' => string 'https://www.youtube.com/' (length=24)
  public 'thumbnail_url' => string 'https://i.ytimg.com/vi/_7s-6V_0nwA/hqdefault.jpg' (length=48)
  public 'author_name' => string 'H2 ZONE' (length=7)
  public 'type' => string 'video' (length=5)
  public 'author_url' => string 'https://www.youtube.com/channel/UC9M35YwDs8_PCWXd3qkiNzg' (length=56)
  public 'provider_name' => string 'YouTube' (length=7)
  public 'height' => int 270
  public 'html' => string '<iframe width="480" height="270" src="https://www.youtube.com/embed/_7s-6V_0nwA?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>' (length=171)
  public 'thumbnail_height' => int 360

Untuk detailnya, Anda juga dapat melihat Cara mendapatkan thumbnail video YouTube menggunakan id atau https://www.youtube.com/watch?v=mXde7q59BI8 tutorial video 1

Metode 2:

Menggunakan tautan gambar YouTube, https://img.youtube.com/vi/ "masukkan-youtube-video-id-here" /default.jpg

Metode 3:

Menggunakan kode sumber browser untuk mendapatkan thumbnail menggunakan tautan URL video-pergi ke kode sumber video dan cari thumbnailurl. Sekarang Anda dapat menggunakan URL ini ke dalam kode sumber Anda:

{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}

Untuk detailnya Anda juga dapat melihat Cara mendapatkan thumbnail video YouTube menggunakan id atau https://www.youtube.com/watch?v=9f6E8MeM6PI video tutorial 2

Hassan Saeed
sumber
Tautan https://www.youtube.com/watch?v=mXde7q59BI8dan https://www.youtube.com/watch?v=9f6E8MeM6PI(secara efektif) rusak.
Peter Mortensen
youtube melarang video ini karena kebijakannya, saya harap artikel ini akan membantu Anda www.hzonesp.com/php/get-youtube-video-thumbnail-using-id/
Hassan Saeed
3

Menggunakan img.youtube.com/vi/YouTubeID/ImageFormat.jpg

Di sini format gambar berbeda seperti default, hqdefault, maxresdefault.

shpwebhost
sumber
2

Ini adalah solusi tanpa-API-kunci-kebutuhan-sisi-klien saya saja.

YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))

Kode:

import { parseURL, parseQueryString } from './url'
import { getImageSize } from './image'

const PICTURE_SIZE_NAMES = [
    // 1280 x 720.
    // HD aspect ratio.
    'maxresdefault',
    // 629 x 472.
    // non-HD aspect ratio.
    'sddefault',
    // For really old videos not having `maxresdefault`/`sddefault`.
    'hqdefault'
]

// - Supported YouTube URL formats:
//   - http://www.youtube.com/watch?v=My2FRPA3Gf8
//   - http://youtu.be/My2FRPA3Gf8
export default
{
    parse: async function(url)
    {
        // Get video ID.
        let id
        const location = parseURL(url)
        if (location.hostname === 'www.youtube.com') {
            if (location.search) {
                const query = parseQueryString(location.search.slice('/'.length))
                id = query.v
            }
        } else if (location.hostname === 'youtu.be') {
            id = location.pathname.slice('/'.length)
        }

        if (id) {
            return {
                source: {
                    provider: 'YouTube',
                    id
                },
                picture: await this.getPicture(id)
            }
        }
    },

    getPicture: async (id) => {
        for (const sizeName of PICTURE_SIZE_NAMES) {
            try {
                const url = getPictureSizeURL(id, sizeName)
                return {
                    type: 'image/jpeg',
                    sizes: [{
                        url,
                        ...(await getImageSize(url))
                    }]
                }
            } catch (error) {
                console.error(error)
            }
        }
        throw new Error(`No picture found for YouTube video ${id}`)
    },

    getEmbeddedVideoURL(id, options = {}) {
        return `https://www.youtube.com/embed/${id}`
    }
}

const getPictureSizeURL = (id, sizeName) => `https://img.youtube.com/vi/${id}/${sizeName}.jpg`

Utilitas image.js:

// Gets image size.
// Returns a `Promise`.
function getImageSize(url)
{
    return new Promise((resolve, reject) =>
    {
        const image = new Image()
        image.onload = () => resolve({ width: image.width, height: image.height })
        image.onerror = reject
        image.src = url
    })
}

Utilitas url.js:

// Only on client side.
export function parseURL(url)
{
    const link = document.createElement('a')
    link.href = url
    return link
}

export function parseQueryString(queryString)
{
    return queryString.split('&').reduce((query, part) =>
    {
        const [key, value] = part.split('=')
        query[decodeURIComponent(key)] = decodeURIComponent(value)
        return query
    },
    {})
}
catamphetamine
sumber
1

Berikut adalah fungsi sederhana yang saya buat untuk mendapatkan thumbnail. Mudah dimengerti dan digunakan.

$ link adalah tautan YouTube yang disalin persis seperti yang ada di browser, misalnya, https://www.youtube.com/watch?v=BQ0mxQXmLsk

function get_youtube_thumb($link){
    $new = str_replace('https://www.youtube.com/watch?v=', '', $link);
    $thumbnail = 'https://img.youtube.com/vi/' . $new . '/0.jpg';
    return $thumbnail;
}
Sodruldeen Mustapha
sumber
Ini hanya berfungsi ketika url tidak memiliki parameter kueri lainnya.
Ma Kobi
ya, semua video youtube mengikuti format sambil menonton, Anda dapat menyalin tautan dari browser
Sodruldeen Mustapha
Bagaimana jika Anda memiliki parameter lain seperti &t=227s?
Ma Kobi
1
saya mengerti maksud Anda, tetapi video youtube standar datang tanpa parameter lain tetapi ketika diperlukan, Anda dapat memfilter tautan sebelum baris pertama dari fungsi. Apakah Anda perlu bantuan dalam memfilter tautan untuk memastikannya mengabaikan semua hal selain yang diperlukan?
Sodruldeen Mustapha
1

Simpan kode ini dalam file .php kosong dan ujilah.

<img src="<?php echo youtube_img_src('9bZkp7q19f0', 'high');?>" />
<?php
// Get a YOUTUBE video thumb image's source url for IMG tag "src" attribute:
// $ID = YouYube video ID (string)
// $size = string (default, medium, high or standard)
function youtube_img_src ($ID = null, $size = 'default') {
    switch ($size) {
        case 'medium':
            $size = 'mqdefault';
            break;
        case 'high':
            $size = 'hqdefault';
            break;
        case 'standard':
            $size = 'sddefault';
            break;
        default:
            $size = 'default';
            break;
    }
    if ($ID) {
        return sprintf('https://img.youtube.com/vi/%s/%s.jpg', $ID, $size);
    }
    return 'https://img.youtube.com/vi/ERROR/1.jpg';
}

Terima kasih.

Ali
sumber
-2
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
Rajat Jain
sumber