अगर मेरे पास YouTube वीडियो URL है, तो क्या YouTube API से संबद्ध थंबनेल प्राप्त करने के लिए PHP और cURL का उपयोग करने का कोई तरीका है?
अगर मेरे पास YouTube वीडियो URL है, तो क्या YouTube API से संबद्ध थंबनेल प्राप्त करने के लिए PHP और cURL का उपयोग करने का कोई तरीका है?
जवाबों:
प्रत्येक YouTube वीडियो में चार उत्पन्न चित्र हैं। वे अनुमानित रूप से निम्नानुसार स्वरूपित हैं:
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
सूची में पहला पूर्ण आकार की छवि है और अन्य थंबनेल छवियां हैं। डिफ़ॉल्ट थंबनेल छवि (यानी, में से एक 1.jpg
, 2.jpg
, 3.jpg
) है:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
थंबनेल के उच्च गुणवत्ता वाले संस्करण के लिए इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
मुख्यालय के समान URL का उपयोग करते हुए, थंबनेल का एक मध्यम गुणवत्ता संस्करण भी है:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
थंबनेल के मानक परिभाषा संस्करण के लिए, इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
थंबनेल के अधिकतम रिज़ॉल्यूशन संस्करण के लिए इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
उपरोक्त सभी URL HTTP पर भी उपलब्ध हैं। इसके अतिरिक्त, थोड़ा छोटा होस्टनाम ऊपर के उदाहरण URL i3.ytimg.com
में जगह के लिए काम करता है img.youtube.com
।
वैकल्पिक रूप से, आप थंबनेल डेटा प्राप्त करने के लिए YouTube डेटा API (v3) का उपयोग कर सकते हैं ।
http://www.img.youtube.com
, केवलhttp://img.youtube.com
mqdefault
16: 9
sddefault
और maxresdefault
अभी कुछ वीडियो उपलब्ध नहीं हैं, हालांकि उनके पास कुछ भी हैं ....
वीडियो थंबनेल, कैप्शन, विवरण, रेटिंग, आंकड़े और अधिक प्राप्त करने के लिए आप YouTube डेटा एपीआई का उपयोग कर सकते हैं । एपीआई संस्करण 3 को एक कुंजी * की आवश्यकता होती है। कुंजी प्राप्त करें और एक वीडियो बनाएं : सूची अनुरोध:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
उदाहरण 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);
उत्पादन
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)
}
}
* इतना ही नहीं कि आपको एक कुंजी की आवश्यकता है, आपको आपके द्वारा बनाई जाने वाली एपीआई अनुरोधों की संख्या के आधार पर बिलिंग जानकारी के लिए कहा जा सकता है। हालांकि, प्रति दिन कुछ मिलियन अनुरोध मुफ्त हैं।
jsonc
बजाय उपयोग किया है json
। यह आपकी गलत JSON संरचना के कारण विफल हो रहा है।
jsonc
। JQuery और PHP उदाहरणों का उपयोग करना चाहिएjson
। और मैंने नई JSON संरचना के अनुरूप कोड को अपडेट किया है। मैं अभी कोड का उपयोग कर रहा हूं और यह LIVE काम कर रहा है। इसलिए यह मत कहो कि यह बदलावों को पढ़े बिना काम नहीं कर रहा है। धन्यवाद!
v=2
) एपीआई परिवर्तनों का ध्यान रखता है।
असफ ने जो कहा वह सही है। हालाँकि, हर YouTube वीडियो में सभी नौ थंबनेल नहीं होते हैं। साथ ही, थंबनेल की छवि का आकार वीडियो पर निर्भर करता है (नीचे की संख्या एक पर आधारित होती है)।
अस्तित्व के लिए सात थंबनेल की गारंटी है:
| 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 |
इसके अतिरिक्त, दो अन्य थंबनेल मौजूद हो सकते हैं या नहीं भी। उनकी उपस्थिति संभवतः इस बात पर आधारित है कि वीडियो उच्च-गुणवत्ता वाला है या नहीं।
| 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 |
आप थंबनेल और अन्य YouTube जानकारी प्राप्त करने के लिए जावास्क्रिप्ट और PHP स्क्रिप्ट पा सकते हैं:
आप YouTube वीडियो सूचना जेनरेटर टूल का उपयोग करके URL या वीडियो आईडी सबमिट करके YouTube वीडियो के बारे में सभी जानकारी प्राप्त कर सकते हैं ।
YouTube API V3 में हम इन URL का उपयोग थंबनेल प्राप्त करने के लिए भी कर सकते हैं ... इन्हें उनकी गुणवत्ता के आधार पर वर्गीकृत किया गया है।
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
और अधिकतम संकल्प के लिए ।।
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
पहले उत्तर में URL पर इन URL का एक फायदा यह है कि ये URL फ़ायरवॉल द्वारा अवरुद्ध नहीं होते हैं।
यदि आप किसी विशिष्ट वीडियो आईडी के लिए YouTube से सबसे बड़ी छवि चाहते हैं, तो URL कुछ इस तरह होना चाहिए:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
एपीआई का उपयोग करके, आप डिफ़ॉल्ट थंबनेल छवि उठा सकते हैं। सरल कोड कुछ इस तरह होना चाहिए:
//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);
यदि आप "ब्लैक बार" से छुटकारा पाना चाहते हैं और इसे ऐसे करें जैसे YouTube करता है, तो आप इसका उपयोग कर सकते हैं:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
और अगर आप .webp
फ़ाइल एक्सटेंशन का उपयोग नहीं कर सकते हैं तो आप इसे इस तरह कर सकते हैं:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
इसके अलावा, अगर आपको बिना बिके हुए संस्करण की आवश्यकता है, तो इसके maxresdefault
बजाय का उपयोग करेंmqdefault
।
नोट: यदि आप उपयोग करने की योजना बना रहे हैं, तो मुझे पहलू अनुपात के बारे में निश्चित नहीं है maxresdefault
।
_webp
एक्सटेंशन को हटाते हैं और बदलते हैं तो यह काम करता है .jpg
। कार्य उदाहरण: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , मैं पहलू अनुपात के बारे में निश्चित नहीं हूँ।
मैंने 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;
}
में YouTube डेटा API v3 , आप के साथ वीडियो के थंबनेल प्राप्त कर सकते हैं वीडियो-> सूची कार्य करते हैं। से snippet.thumbnails। (Key) , आप डिफ़ॉल्ट, मध्यम या उच्च संकल्प थंबनेल चुनें, और इसकी चौड़ाई, ऊंचाई और URL प्राप्त कर सकते हैं।
आप थंबनेल-> सेट के साथ थंबनेल भी अपडेट कर सकते हैं कार्यक्षमता के ।
उदाहरण के लिए, आप YouTube API नमूने परियोजना की जांच कर सकते हैं । ( PHP वाले ।)
आप वीडियो प्रविष्टि प्राप्त कर सकते हैं जिसमें वीडियो के थंबनेल का URL है। लिंक में उदाहरण कोड है। या, यदि आप XML को पार्स करना चाहते हैं, तो यहां जानकारी है । एक्सएमएल रिटर्न में एक media:thumbnail
तत्व होता है, जिसमें थंबनेल का यूआरएल होता है।
// 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 Google के स्वामित्व में है और Google को विभिन्न स्क्रीन आकारों के लिए उचित संख्या में चित्र पसंद हैं, इसलिए इसकी छवियां विभिन्न आकारों में संग्रहीत हैं। यहाँ एक उदाहरण दिया गया है कि आपका थंबनेल कैसा होगा:
निम्न गुणवत्ता थंबनेल:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
मध्यम गुणवत्ता थंबनेल:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
उच्च गुणवत्ता थंबनेल:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
अधिकतम गुणवत्ता थंबनेल:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
यदि आप सब करना चाहते हैं तो YouTube खोजें और संबद्ध गुण प्राप्त करें:
एक सार्वजनिक एपीआई प्राप्त करें - यह लिंक एक अच्छी दिशा देता है
नीचे क्वेरी स्ट्रिंग का उपयोग करें। खोज प्रश्न (जो चिह्नित q = URL स्ट्रिंग में) है stackoverflow उदाहरण प्रयोजनों के लिए। YouTube फिर आपको एक JSON उत्तर भेजेगा जहां आप तब थंबनेल, स्निपेट, लेखक, आदि के लिए पार्स कर सकते हैं।
एक और अच्छा विकल्प oEmbed API का उपयोग करना होगा जो YouTube द्वारा समर्थित है।
आप बस अपने YouTube URL को oEmbed URL में जोड़ते हैं और आपको एम्बेड करने के लिए थंबनेल और HTML कोड सहित एक JSON प्राप्त होगा।
उदाहरण:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
आपको देंगे:
{
"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"
}
अधिक जानकारी के लिए प्रलेखन पढ़ें ।
उपयोग:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
ऊपर लिंक है। इसका उपयोग करके, आप वीडियो की YouTube विशेषताओं को पा सकते हैं। विशेषताओं को खोजने के बाद, आप चयनित श्रेणी के वीडियो प्राप्त कर सकते हैं। उसके बाद आप आसफ के उत्तर का उपयोग करके चयनित वीडियो चित्र पा सकते हैं ।
उपरोक्त दृष्टिकोण का प्रयास करें और आप YouTube API से सब कुछ पार्स कर सकते हैं ।
मैंने इस तरह से YouTube थंबनेल का उपयोग किया है:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
याद रखें YouTube अपने सर्वर से सीधे छवियों को शामिल करने से रोकता है।
मुझे यह निफ्टी टूल मिला जो आपको छवि के ऊपर दिए गए YouTube प्ले बटन के साथ छवि बनाने की अनुमति देता है:
बस दिए गए समाधानों को जोड़ने / विस्तार करने के लिए, मुझे लगता है कि यह ध्यान रखना आवश्यक है, जैसा कि मुझे स्वयं यह समस्या थी, कोई वास्तव में कई YouTube वीडियो सामग्री को हड़प सकता है, इस मामले में, एक HTTP अनुरोध के साथ थंबनेल:
रेस्ट क्लाइंट का उपयोग करते हुए, इस मामले में, HTTPFUL, आप कुछ इस तरह से कर सकते हैं:
<?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);
?>
YouTube हमें डेटा API (v3) के माध्यम से प्रत्येक वीडियो के लिए चार जेनरेट की गई छवियां प्रदान करता है, उदाहरण के लिए,
इसके अनुसार, आपको अपने URL को इस तरह वाक्यांशित करना होगा -
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
अब अपने वीडियो आईडी और एपीआई कुंजी को अपने संबंधित वीडियो-आईडी और एपी-की में बदलें और इसकी प्रतिक्रिया एक JSON आउटपुट होगी जो आपको स्निपेट चर के थंबनेल में चार लिंक प्रदान करेगा (यदि सभी उपलब्ध हैं)।
आप parse_url , parse_str का उपयोग करके YouTube वीडियो url से वीडियो आईडी प्राप्त कर सकते हैं और फिर छवियों के लिए पूर्वानुमानित यूआरएल में सम्मिलित कर सकते हैं। प्रेडिक्टिव URL के लिए YouTube का धन्यवाद
$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 थंबनेल बनाने के लिए आप इस टूल का उपयोग कर सकते हैं
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
एक साधारण PHP फ़ंक्शन जिसे मैंने YouTube थंबनेल के लिए बनाया है और प्रकार हैं
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;}
यदि आप सार्वजनिक एपीआई का उपयोग कर रहे हैं, तो इसे करने का सबसे अच्छा तरीका if
बयानों का उपयोग करना है ।
यदि वीडियो सार्वजनिक या असूचीबद्ध है, तो आप URL विधि का उपयोग करके थंबनेल सेट करते हैं। यदि वीडियो निजी है तो आप थंबनेल प्राप्त करने के लिए एपीआई का उपयोग करते हैं।
<?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';
}
मुझे लगता है कि उनके थंबनेल के लिए बहुत सारे उत्तर हैं, लेकिन मैं YouTube थंबनेल को बहुत आसानी से प्राप्त करने के लिए कुछ अन्य URL जोड़ना चाहता हूं। मैं सिर्फ आसफ के जवाब से कुछ पाठ ले रहा हूं। YouTube थंबनेल पाने के लिए यहां कुछ URL दिए गए हैं:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
थंबनेल के उच्च गुणवत्ता वाले संस्करण के लिए इसके समान URL का उपयोग करें:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
उच्च गुणवत्ता के समान URL का उपयोग करते हुए, थंबनेल का एक मध्यम गुणवत्ता संस्करण भी है:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
थंबनेल के मानक परिभाषा संस्करण के लिए, इसके समान URL का उपयोग करें:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
थंबनेल के अधिकतम रिज़ॉल्यूशन संस्करण के लिए इसके समान URL का उपयोग करें:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
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');
यहां मैनुअल उपयोग के लिए शीर्ष उत्तर को अनुकूलित किया गया है। विभाजकों के बिना वीडियो आईडी टोकन एक डबल क्लिक के साथ चयन करने में सक्षम बनाता है।
प्रत्येक YouTube वीडियो में चार उत्पन्न चित्र हैं। वे अनुमानित रूप से निम्नानुसार स्वरूपित हैं:
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
सूची में पहला पूर्ण आकार की छवि है और अन्य थंबनेल छवियां हैं। (। यानी में से एक डिफ़ॉल्ट थंबनेल छवि 1.jpg
, 2.jpg
, 3.jpg
) है:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
थंबनेल के उच्च गुणवत्ता वाले संस्करण के लिए इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
मुख्यालय के समान URL का उपयोग करते हुए, थंबनेल का एक मध्यम गुणवत्ता संस्करण भी है:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
थंबनेल के मानक परिभाषा संस्करण के लिए, इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
थंबनेल के अधिकतम रिज़ॉल्यूशन संस्करण के लिए इसके समान URL का उपयोग करें:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
उपरोक्त सभी URL HTTP पर भी उपलब्ध हैं। इसके अतिरिक्त, थोड़ा छोटा होस्टनाम ऊपर के उदाहरण URL i3.ytimg.com
में जगह के लिए काम करता है img.youtube.com
।
वैकल्पिक रूप से, आप थंबनेल डेटा प्राप्त करने के लिए YouTube डेटा API (v3) का उपयोग कर सकते हैं ।
विधि 1:
आप एक JSON पृष्ठ के साथ YouTube वीडियो के लिए सभी जानकारी पा सकते हैं, जिसमें "थंबनेल_ url " भी है, http://www.youtube.com/oembed?format=json&url= {आपका वीडियो URL यहां जाता है}
जैसे फाइनल URL लुक + 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);
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
विवरण के लिए, आप यह भी देख सकते हैं कि आईडी या https://www.youtube.com/watch?v=mXde7q59BI8 वीडियो ट्यूटोरियल का उपयोग करके YouTube वीडियो थंबनेल कैसे प्राप्त करें 1
विधि 2:
YouTube छवि लिंक का उपयोग करके, https://img.youtube.com/vi/ "सम्मिलित करें-youtube-video-id-here" /default.jpg
विधि 3:
थंबनेल पाने के लिए ब्राउज़र स्रोत कोड का उपयोग करना, वीडियो स्रोत लिंक के लिए वीडियो यूआरएल लिंक का उपयोग करना और थंबनेल के लिए खोज करना। अब आप इस URL का उपयोग अपने स्रोत कोड में कर सकते हैं:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
विवरण के लिए आप आईडी या https://www.youtube.com/watch?v=9f6E8MeM6PI वीडियो ट्यूटोरियल 2 का उपयोग करके YouTube वीडियो थंबनेल प्राप्त करने का तरीका भी देख सकते हैं
https://www.youtube.com/watch?v=mXde7q59BI8
और https://www.youtube.com/watch?v=9f6E8MeM6PI
(प्रभावी रूप से) टूटे हुए हैं।
उपयोग img.youtube.com/vi/YouTubeID/ImageFormat.jpg
यहां छवि प्रारूप डिफ़ॉल्ट, hqdefault, maxresdefault जैसे भिन्न हैं।
यह मेरा क्लाइंट-साइड-नो-एपीआई-की-नीड-सोल्यूशन है।
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
कोड:
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`
उपयोगिता 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
})
}
उपयोगिता 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
},
{})
}
यहाँ एक सरल कार्य है जो मैंने थंबनेल प्राप्त करने के लिए बनाया है। इसे समझना और उपयोग करना आसान है।
$ लिंक YouTube लिंक है जो बिल्कुल ब्राउज़र में है, उदाहरण के लिए, 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;
}
&t=227s
?
इस कोड को खाली .php फ़ाइल में सहेजें और इसका परीक्षण करें।
<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';
}
धन्यवाद।