YouTube API'sından bir YouTube video küçük resmini nasıl alabilirim?


Yanıtlar:


4609

Her YouTube videosunda dört oluşturulan resim vardır. Tahmin edilebilir şekilde aşağıdaki gibi biçimlendirilirler:

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

Listedeki ilk resim tam boyutlu bir resimdir ve diğerleri küçük resim görüntüleridir. Varsayılan küçük resim (yani biri 1.jpg, 2.jpg, 3.jpg) 'dir:

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

Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:

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

Genel merkeze benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:

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

Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:

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

Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:

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

Yukarıdaki URL'lerin tümü HTTP üzerinden de kullanılabilir. Ayrıca, biraz daha kısa ana bilgisayar adı yukarıdaki örnek URL'lerin i3.ytimg.comyerine çalışır img.youtube.com.

Alternatif olarak, küçük resim almak için YouTube Veri API'sını (v3) kullanabilirsiniz.


27
Başka birinin bu aptal hatayı yapması durumunda - http://www.img.youtube.comsadece kullanamazsınızhttp://img.youtube.com
Ciaran Phillips

36
@NickG mqdefault16: 9
tomtastico

57
bu resmi olarak belgelenen bir yer mi?
bjunix

14
Daha yüksek çözünürlüklü küçük resimlerin mevcut olduğu garanti edilmez.
Salman A

63
@ clami219 bu da yanlış - açıkça çalışıyor (2015-04): i.ytimg.com/vi_webp/EhjdWfxjuHA/sddefault.webp , gerçek: sddefaultve maxresdefaultDAİMA DEĞİLDİR bazı videolar olsa da ...
jave.web

398

Video küçük resimleri, resim yazısı, açıklama, derecelendirme, istatistikler ve daha fazlasını almak için YouTube Veri API'sını kullanabilirsiniz . API sürüm 3 bir anahtar * gerektirir. Anahtarı alın ve bir video oluşturun : liste isteği:

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

Örnek PHP Kodu

$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);

Çıktı

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

* Yalnızca bir anahtara ihtiyacınız olmadığından, yapmayı planladığınız API isteklerinin sayısına bağlı olarak fatura bilgileri istenebilir. Ancak, günde birkaç milyon istek ücretsizdir.

Kaynak makale .


6
Bilginize: i yeni JSON yapısına uyacak şekilde kodu değiştirmedim. GetJSON'unuzdaki kod yanlış. Kullanılan jsoncyerine jsongetJSON için. Yanlış JSON yapınız nedeniyle başarısız oluyor.
mauris

5
Yalnızca ilk örnek kullanabilir jsonc. JQuery ve PHP örnekler GEREKİR kullanın json. Ve yeni JSON yapısına uyacak şekilde kodu güncelledim. Şu anda kodu kullanıyorum ve CANLI çalışıyor. bu yüzden değişiklikleri okumadan çalışmadığını söylemeyin. Teşekkürler!
mauris

7
JQuery ve PHP örnekleri json kullanmalıdır ZORUNLU ... bir referans sağlayabilir misiniz? Ayrıca, belirli bir API sürüm numarası ( v=2) istemek API değişikliklerini de dikkate alır.
Salman A

4
Gdata çağrısı, maxresdefault.jpg dosyasının kullanılabilir olduğu videolar için kullanılabilir olup olmadığını döndürmez, yalnızca mq / hq / sd.
Aaron

2
API v3 ÇOK kötü bir şekilde belgelenmiştir. Size örnek kod verir, ancak "başvuru" bölümü çok kısa ayrıntı. Nispeten "açık" olması gereken bazı şeyler, aşırı geçici çözümler gerektiriyor gibi görünmektedir.
CashCow

256

Asaph'ın söyledikleri doğru. Ancak, her YouTube videosu dokuz küçük resmin tümünü içermez. Ayrıca, küçük resimlerin görüntü boyutları videoya bağlıdır (aşağıdaki sayılar bir taneye dayanmaktadır).

Var olması garanti edilen yedi küçük resim vardır:

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

Ayrıca, diğer iki küçük resim var olabilir veya olmayabilir. Varlıkları büyük olasılıkla videonun yüksek kaliteli olup olmadığına bağlıdır.

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

Küçük resimleri ve diğer YouTube bilgilerini almak için JavaScript ve PHP komut dosyalarını bulabilirsiniz:

Bir URL veya video kimliği göndererek bir YouTube videosu hakkındaki tüm bilgileri almak için YouTube Video Bilgi Oluşturucu aracını da kullanabilirsiniz .


5
Aynı sonucu resmi youtube bağlantısı img.youtube.com/vi/mJ8tq8AnNis/mqdefault.jpg ile de elde edebilirsiniz , burada mJ8tq8AnNis video kimliği
Ragaisis

4
Bazen belirli olanlar mevcut değildir - i1.ytimg.com/vi/r5R8gSgedh4/0.jpg , örneğin i1.ytimg.com/vi/r5R8gSgedh4/0.jpg iyidir.
NoBugs

Bunu gönderdiğiniz için teşekkürler. Bu veriler için bir kaynağınız var mı? Doğru, ancak bu konuda Youtube / Google'dan bir şey bağlantısı istiyorum ve bulamıyorum.
Jonathan Vanasco

@JonathanVanasco, üzgünüm. Tam içerikler için resmi bir kaynak demek istiyorsan, bilmiyorum. Onların bakış açısından böyle bir şey yayınlamanın bir amacı olduğunu sanmıyorum.
AGMG

4
"YouTube Video Bilgi Oluşturucu" aracı şu anda çalışmıyor. Cevabı düzenlemeyi düşünün.
giovannipds

74

YouTube API V3'te bu URL'leri küçük resimler elde etmek için de kullanabiliriz ... Kalitelerine göre sınıflandırılırlar.

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

Ve maksimum çözünürlük için ..

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

Bu URL'lerin ilk yanıttaki URL'lere göre avantajlarından biri, bu URL'lerin güvenlik duvarları tarafından engellenmemesi.


3
Bu görüntüler bir img etiketine yerleştirilmesi gerekiyor mu ve sadece doğru youtube video kimliği ile bağlantı eklemek ve img etiketi içine koymaya çalışıyorum çünkü çalışmalıyım ama ben bir 404
Lion789

5
@ Lion789 Bu URL'ler, bir img etiketine yerleştirildiğinde iyi çalışıyor .. Sorun yanlış bir video kimliği olabilir veya istenen çözünürlük mevcut olmayabilir, ancak bu hatalarla 404'ü alamazsınız. img etiketi.
Naren

2
API v2 durdurulduktan sonra URL'lerin çalışmaya devam edeceği doğrulandı mı?
Daniele B

1
@DanieleB Bu URL'ler hala çalışıyor. Bu URL'lerin API v2'den sonra çalışıp çalışmadığını nasıl kontrol edeceğinizi biliyor musunuz?
Naren

53

Belirli bir video kimliği için YouTube'dan en büyük resmi almak istiyorsanız, URL aşağıdaki gibi olmalıdır:

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

API'yı kullanarak varsayılan küçük resim görüntüsünü alabilirsiniz. Basit kod şöyle olmalıdır:

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

2
0.jpg'nin 480x360 çözünürlüğüne sahip olduğu bir örnek buldum, maxresdefault.jpg ise 1280x720
Nico Haase

45

"Siyah çubuklardan" kurtulmak ve bunu YouTube'un yaptığı gibi yapmak istiyorsanız şunları kullanabilirsiniz:

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

Kullanmadığınız Ve eğer .webpdosya uzantısı bunu şöyle yapabilirsiniz:

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

Ayrıca, ölçeklendirilmemiş sürüme ihtiyacınız varsa maxresdefaultyerine kullanın mqdefault.

Not: Kullanmayı planlıyorsanız, en boy oranından emin değilim maxresdefault.


2
Bu, birçok video için mevcut değildir. Örn: i.ytimg.com/vi_webp/mJ8tq8AnNis/mqdefault.webp
NickG

2
@NickG: Uzantıyı kaldırır _webpve olarak değiştirirseniz çalışır .jpg. Çalışma örneği: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , en boy oranından emin değilim.
LuTz

34

Yalnızca YouTube'dan mevcut resimleri getirme işlevi gördüm

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

32

In YouTube Veri API'sı v3 , sizinle videonun küçük resimlerini alabilirsiniz Video-> liste fonksiyonu. Gönderen snippet.thumbnails. (Tuşu) , varsayılan, orta veya yüksek çözünürlüklü küçük resim seçmek ve genişliği, yüksekliği ve URL alabilecek.

Minik resimleri, minik resimler-> ayar işleviyle de güncelleyebilirsiniz .

Örnekler için YouTube API Örnekleri projesine göz atabilirsiniz . ( PHP olanlar .)


1
Youtube api için bir Google Dev ilişkileri üyesinden geldiğinden bunu yapmanın doğru yolu olduğunu tahmin ediyorum
Adonis K. Kakoulidis

31

Videonun küçük resminin URL'sini içeren Video Girişini alabilirsiniz . Bağlantıda örnek kod var. XML Ayrıştırma istiyorsanız Veya, bilgi var burada . Döndürülen XML media:thumbnail, küçük resmin URL'sini içeren bir öğeye sahiptir .


2
SimpleXML kullanarak çıkamıyorum. Oldukça zor!
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;

2
bu kötü bir çözüm! neden Youtube api v3 kullanmıyorsunuz?
mpgn

19

YouTube Google'a aittir ve Google farklı ekran boyutları için makul sayıda resme sahip olmayı sever, bu nedenle görüntüleri farklı boyutlarda saklanır. Küçük resminizin nasıl olacağını gösteren bir örnek:

Düşük kaliteli küçük resim:

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

Orta kalitede küçük resim:

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

Yüksek kaliteli küçük resim:

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

Maksimum kalitede küçük resim:

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

16

YouTube API sürüm 3 2 dakika içinde kullanıma hazır

Yapmak istediğiniz tek şey YouTube'da arama yapmak ve ilişkili mülkleri almaksa:

  1. Herkese açık bir API edinin - Bu bağlantı iyi bir yön verir

  2. Aşağıdaki sorgu dizesini kullanın. URL dizesindeki arama sorgusu ( q = ile gösterilir ), örneğin amaçlar için stackoverflow şeklindedir . YouTube size daha sonra Küçük Resim, Snippet, Yazar vb. İçin ayrıştırabileceğiniz bir JSON yanıtı gönderir.

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


16

Başka bir iyi alternatif, YouTube tarafından desteklenen oEmbed API'sini kullanmak olacaktır .

YouTube URL'nizi oEmbed URL'sine eklemeniz yeterlidir ve gömmek için bir küçük resim ve HTML kodu içeren bir JSON alırsınız.

Misal:

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

Size verecekti:

{
  "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"
}

Daha fazla bilgi için belgeleri okuyun .


15

kullanın:

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

Yukarıdaki bağlantı. Bunu kullanarak videoların YouTube özelliklerini bulabilirsiniz. Karakteristikleri bulduktan sonra, seçilen kategoriden videolar alabilirsiniz. Bundan sonra Asaph'ın cevabını kullanarak seçilen video görüntülerini bulabilirsiniz .

Yukarıdaki yaklaşımı deneyin ve YouTube API'sındaki her şeyi ayrıştırabilirsiniz .


14

YouTube küçük resimlerini şu şekilde kullandım:

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

YouTube'un görüntüleri doğrudan sunucularından eklemeyi engellediğini unutmayın.



13

Sadece verilen çözümleri eklemek / genişletmek için, kendim bu sorunu yaşadığım için, aslında bir HTTP isteği ile birden fazla YouTube videosu içeriği, bu durumda küçük resimler alabileceğinizi belirtmek gerekir:

Bir Rest Client kullanarak, bu durumda, HTTPFUL, şöyle bir şey yapabilirsiniz:

<?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);

?>

13

YouTube Veri API'sı

YouTube bize Veri API'sı (v3) aracılığıyla her video için oluşturulan dört resmi sağlar, örneğin,

  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

API aracılığıyla görüntülere erişim

  1. İlk olarak genel API anahtarınızı Google API Konsolu'ndan alın .
  2. YouTube'un API belgelerindeki küçük resim referansına göre snippet.thumbnails'deki kaynaklara erişmeniz gerekir.
  3. Buna göre URL'nizi şöyle ifade etmeniz gerekir -

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

Şimdi video kimliğinizi ve API anahtarınızı ilgili video kimliğinize ve api anahtarınıza değiştirin; yanıtı, snippet değişkeninin küçük resimlerindeki dört bağlantıyı (tümü mevcutsa) sağlayan bir JSON çıkışı olacaktır.


13

Video kimliğini parse_url , parse_str kullanarak YouTube video url'sinden alabilir ve ardından resimler için tahmini URL'lere ekleyebilirsiniz. Tahmini URL'ler için YouTube'a teşekkürler

$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";

YouTube küçük resimleri oluşturmak için bu aracı kullanabilirsiniz

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


11

YouTube küçük resmi ve türleri için oluşturduğum basit bir PHP işlevi

  • varsayılan
  • hqdefault
  • 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;}

10

Genel API kullanıyorsanız, bunu yapmanın en iyi yolu ififadeler kullanmaktır .

Video herkese açık veya liste dışıysa, URL yöntemini kullanarak küçük resmi ayarlarsınız. Video özelse, küçük resmi almak için API'yı kullanırsınız.

<?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';
    }

8

Bence onların küçük resim için bir sürü cevabı var, ancak YouTube küçük resmini çok kolay bir şekilde almak için başka URL'ler eklemek istiyorum. Sadece Asaph'ın cevabından bir metin alıyorum. YouTube küçük resimlerini almak için bazı URL'ler şunlardır:

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

Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:

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

Yüksek kaliteye benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:

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

Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:

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

Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:

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

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');

5

İşte manuel kullanım için optimize edilmiş en iyi cevap . Ayırıcı içermeyen video kimliği belirteci, çift tıklama ile seçim yapılmasını sağlar.

Her YouTube videosunda dört oluşturulan resim vardır. Tahmin edilebilir şekilde aşağıdaki gibi biçimlendirilirler:

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

Listedeki ilk resim tam boyutlu bir resimdir ve diğerleri küçük resim görüntüleridir. (. Yani biri varsayılan küçük resim 1.jpg, 2.jpg, 3.jpg) 'dir:

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

Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:

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

Genel merkeze benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:

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

Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:

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

Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:

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

Yukarıdaki URL'lerin tümü HTTP üzerinden de kullanılabilir. Ayrıca, biraz daha kısa ana bilgisayar adı yukarıdaki örnek URL'lerin i3.ytimg.comyerine çalışır img.youtube.com.

Alternatif olarak, küçük resim almak için YouTube Veri API'sını (v3) kullanabilirsiniz.


4

Yöntem 1:

"Küçük resim_url", http://www.youtube.com/oembed?format=json&url= {video URL'niz buraya gelir}

Nihai URL görünümü + PHP test kodu gibi

$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);

Çıktı

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

Ayrıntılar için id veya https://www.youtube.com/watch?v=mXde7q59BI8 video eğiticisini kullanarak YouTube videosu küçük resmini nasıl alacağınızı da görebilirsiniz 1

Yöntem 2:

YouTube resim bağlantısını kullanarak, https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg

Yöntem 3:

Video URL bağlantısını kullanarak küçük resim almak için tarayıcı kaynak kodunu kullanma - video kaynak koduna git ve thumbnailurl öğesini arayın. Artık bu URL'yi kaynak kodunuzda kullanabilirsiniz:

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

Ayrıntılar için id veya https://www.youtube.com/watch?v=9f6E8MeM6PI video eğitimi 2 kullanarak bir YouTube videosu küçük resmini nasıl edineceğinizi de görebilirsiniz.


Linkler https://www.youtube.com/watch?v=mXde7q59BI8ve https://www.youtube.com/watch?v=9f6E8MeM6PI(etkin) kopuk.
Peter Mortensen

youtube politikaları nedeniyle bu videoyu yasakladı umarım bu makale size yardımcı olacaktır. www.hzonesp.com/php/get-youtube-video-thumbnail-using-id/
Hassan Saeed

3

kullanım img.youtube.com/vi/YouTubeID/ImageFormat.jpg

Burada görüntü formatları varsayılan, hqdefault, maxresdefault gibi farklıdır.


2

Bu benim istemci tarafı-sadece-API-anahtar gerekli çözümdür.

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

Kod:

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`

Yardımcı Program 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
    })
}

Yardımcı Program 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
    },
    {})
}

1

Küçük resimleri almak için oluşturduğum basit bir işlev. Anlamak ve kullanmak kolaydır.

$ bağlantısı, tıpkı tarayıcıda olduğu gibi kopyalanan YouTube bağlantısıdır, örneğin, 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;
}

Bu yalnızca url'de başka sorgu parametresi olmadığında çalışır.
Ma Kobi

Evet, tüm youtube videoları izlerken formatı takip ediyor, bağlantıyı tarayıcıdan kopyalayabilirsiniz
Sodruldeen Mustapha

Ya başka bir parametreniz varsa &t=227s?
Ma Kobi

1
Ben senin noktasını anlamak, ama standart youtube videoları diğer parametreler olmadan geliyor ama ihtiyaç ortaya çıktığında, fonksiyonun ilk satırından önce bağlantı filtre edebilirsiniz. İhtiyaç dışında diğer her şeyi göz ardı ettiğinden emin olmak için bağlantıyı filtrelemek için yardıma mı ihtiyacınız var?
Sodruldeen Mustapha

1

Bu kodu boş .php dosyasına kaydedin ve test edin.

<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';
}

Teşekkürler.


-2
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.