Jika saya memiliki URL video YouTube, apakah ada cara untuk menggunakan PHP dan cURL untuk mendapatkan berhubungan thumbnail dari YouTube API?
Masing-YouTube video ini memiliki empat gambar yang dihasilkan. Mereka diduga 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 gambar (yaitu, salah satu dari1.jpg
, 2.jpg
, 3.jpg
) adalah:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Untuk kualitas tinggi versi thumbnail menggunakan URL seperti ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Ada juga yang kualitas menengah versi thumbnail, menggunakan URL yang sama ke HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Untuk definisi standar versi thumbnail, gunakan URL seperti ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Untuk resolusi maksimum versi thumbnail menggunakan URL seperti ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Semua hal di atas Url yang tersedia melalui HTTP juga. Selain itu, sedikit lebih pendek hostname i3.ytimg.com
bekerja di tempat img.youtube.com
pada contoh Url di atas.
Atau, anda dapat menggunakan YouTube Data API (v3) untuk mendapatkan gambar thumbnail.
Anda dapat menggunakan YouTube Data API untuk mengambil video thumbnail, judul, deskripsi, peringkat, statistik dan banyak lagi. API versi 3 membutuhkan key*. Mendapatkan kunci dan membuat 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);
Output
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 itu anda perlu kunci, anda mungkin akan diminta untuk informasi penagihan tergantung pada jumlah permintaan API anda berencana untuk membuat. Namun, beberapa juta permintaan per hari gratis.
Apa yang Asaf katakan adalah benar. Namun, tidak setiap video YouTube yang berisi semua sembilan thumbnail. Juga, the thumbnail' ukuran gambar tergantung pada video (angka-angka di bawah ini didasarkan pada salah satu).
Ada tujuh thumbnail 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 lainnya thumbnail mungkin atau mungkin tidak ada. Kehadiran mereka ini mungkin didasarkan pada apakah video 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 JavaScript dan PHP script untuk mengambil thumbnail dan lainnya YouTube informasi di:
Anda juga dapat menggunakan Video YouTube Informasi Generator alat untuk mendapatkan semua informasi tentang video YouTube dengan mengirimkan URL atau video id.
Di YouTube API V3 kita juga dapat menggunakan Url ini untuk memperoleh thumbnail... Mereka diklasifikasikan berdasarkan kualitas mereka.
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 maksimal..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Salah satu keuntungan dari Url di atas dengan Url yang di jawaban pertama adalah bahwa Url ini don't mendapatkan diblokir oleh firewall.
Jika anda ingin terbesar image dari YouTube untuk video tertentu ID, maka URL akan menjadi seperti ini:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Dengan menggunakan API, anda dapat mengambil gambar thumbnail default. Kode sederhana harus menjadi sesuatu 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);
Jika anda ingin menyingkirkan dari "bar hitam" dan melakukannya seperti YouTube itu, anda dapat menggunakan:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Dan jika anda dapat't menggunakan .webp
ekstensi file anda dapat melakukannya seperti ini:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Juga, jika anda perlu unscaled versi, gunakan maxresdefault
bukan mqdefault
.
Catatan: saya'm tidak yakin tentang aspek rasio jika anda're berencana untuk menggunakan maxresdefault
.
Saya membuat sebuah 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;
}
Di YouTube Data API v3, anda bisa mendapatkan video's thumbnail dengan video->list fungsi. Dari snippet.thumbnail.(kunci), anda dapat memilih default, menengah atau tinggi resolusi thumbnail, dan dapatkan lebar, tinggi, dan URL.
Anda juga dapat memperbarui thumbnail dengan thumbnail->set fungsi.
Untuk contoh, anda dapat memeriksa YouTube API Sampel proyek. (PHP yang.)
Anda bisa mendapatkan Entri Video yang berisi URL untuk video yang's thumbnail. Ada's contoh kode di link. Atau, jika anda ingin mengurai XML, ada's informasi di sini. XML kembali memiliki media:thumbnail
elemen, yang berisi thumbnail's URL.
// 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;
YouTube dimiliki oleh Google dan Google suka untuk memiliki jumlah yang wajar dari gambar untuk ukuran layar yang berbeda, maka gambar yang disimpan dalam ukuran yang berbeda. Berikut adalah contoh bagaimana mini anda akan menjadi seperti:
Kualitas rendah thumbnail:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Kualitas Medium thumbnail:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Kualitas tinggi thumbnail:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Kualitas yang maksimal thumbnail:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Jika semua yang anda ingin lakukan adalah pencarian YouTube dan mendapatkan sifat yang terkait:
Mendapatkan API umum -- link Ini memberikan arah yang baik
Gunakan di bawah ini query string. Pencarian query (dilambangkan dengan q=) di URL string stackoverflow misalnya tujuan. YouTube kemudian akan mengirim anda kembali JSON balas di mana anda kemudian dapat mengurai untuk Thumbnail, Cuplikan, Penulis, dll.
Gunakan:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Di atas adalah tautan. Menggunakan ini, anda dapat menemukan YouTube karakteristik dari video. Setelah menemukan karakteristik, anda bisa mendapatkan video dari kategori yang dipilih. Setelah itu anda dapat menemukan video yang dipilih gambar menggunakan Asaf's jawaban.
Mencoba pendekatan di atas dan anda dapat mengurai segala sesuatu dari YouTube API.
Saya telah menggunakan YouTube thumbnail 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.
Hanya untuk menambah/memperluas solusi yang diberikan, saya merasa perlu untuk dicatat bahwa, ketika aku punya masalah saya sendiri, benar-benar dapat mengambil beberapa video YouTube content, dalam hal ini, thumbnail, dengan satu HTTP request:
Menggunakan Sisa Klien, 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);
?>
Saya menemukan ini bagus alat yang memungkinkan anda untuk membuat gambar dengan YouTube play tombol yang ditempatkan di atas gambar:
Alternatif lain yang baik akan menggunakan oEmbed API yang didukung oleh YouTube.
Anda cukup menambahkan URL YouTube ke oEmbed URL dan anda'll menerima JSON termasuk thumbnail dan kode HTML untuk embedding.
Contoh:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DDLzxrzFCyOs
Akan memberikan anda:
{
thumbnail_url: "https://i.ytimg.com/vi/DLzxrzFCyOs/hqdefault.jpg",
width: 459,
author_name: "AllKindsOfStuff",
version: "1.0",
author_url: "https://www.youtube.com/channel/UCLNd5EtH77IyN1frExzwPRQ",
thumbnail_width: 480,
type: "video",
provider_url: "https://www.youtube.com/",
html: "<iframe width="459" height="344" src=" frameborder="0" allowfullscreen></iframe>",
title: "Some title bla bla foo bar",
thumbnail_height: 360,
provider_name: "YouTube",
height: 344
}
Baca dokumentasi untuk lebih informasi.
Anda bisa mendapatkan video ID dari url video YouTube menggunakan parse_url ,parse_str dan kemudian masukkan ke dalam prediksi url untuk gambar. Terima kasih kepada YouTube untuk prediksi Url
$videoUrl = "
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/<?php print $ytID?>/maxresdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/mqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/hqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/sddefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/default.jpg";
Anda dapat menggunakan alat ini untuk menghasilkan thumbnail YouTube
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Fungsi PHP sederhana yang saya buat untuk YouTube thumbnail dan jenis
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;}
Jika anda're menggunakan API publik, cara terbaik untuk melakukannya adalah dengan menggunakan jika
pernyataan.
Jika video publik atau tidak tercantum, anda mengatur thumbnail menggunakan metode URL. Jika video 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> Unlisted';
}
elseif($video_status == 'public'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-eye"></i> Public';
}
elseif($video_status == 'private'){
$video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
$video_status = '<i class="fa fa-lock"></i> Private';
}