كيف يمكنني الحصول على صورة مصغرة فيديو على YouTube من واجهة برمجة تطبيقات YouTube؟

StackOverflow https://stackoverflow.com/questions/2068344

سؤال

إذا كان لدي عنوان URL فيديو على YouTube ، هل هناك أي طريقة لاستخدام PHP و Curl للحصول على الصورة المصغرة المرتبطة من واجهة برمجة تطبيقات YouTube؟

هل كانت مفيدة؟

المحلول

يحتوي كل فيديو على 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 مشابه لـ HQ:

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 أيضًا. بالإضافة إلى ذلك ، اسم المضيف أقصر قليلاً i3.ytimg.com يعمل بدلا من img.youtube.com في مثال عناوين URL أعلاه.

بدلاً من ذلك ، يمكنك استخدام youtube Data API (V3) للحصول على صور الصورة المصغرة.

نصائح أخرى

يمكنك استخدام youtube بيانات API لاسترداد صورة مصغرة للفيديو ، التسمية التوضيحية ، الوصف ، التصنيف ، الإحصاءات والمزيد. يتطلب الإصدار 3 API مفتاح*. الحصول على المفتاح وإنشاء أ مقاطع الفيديو: قائمة طلب:

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

* ليس فقط أنك بحاجة إلى مفتاح ، فقد يُطلب منك الحصول على معلومات الفواتير اعتمادًا على عدد طلبات API التي تخطط لتقديمها. ومع ذلك ، فإن القليل من الطلبات في اليوم مجاني.

مقالة المصدر.

ما قاله أساف هو الصحيح. ومع ذلك ، لا يحتوي كل فيديو على 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 |

يمكنك العثور على البرامج النصية JavaScript و PHP لاسترداد الصور المصغرة وغيرها من معلومات YouTube في:

يمكنك أيضا استخدام generator معلومات فيديو YouTube أداة للحصول على جميع المعلومات حول مقطع فيديو على YouTube عن طريق إرسال عنوان URL أو معرف الفيديو.

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

باستخدام API ، يمكنك التقاط صورة Thumbnail الافتراضية. يجب أن يكون رمز بسيط مثل هذا:

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

لقد قمت بوظيفة لجلب الصور الحالية فقط من 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 Data API V3, ، يمكنك الحصول على صورة مصغرة للفيديو مع مقاطع الفيديو-> قائمة وظيفة. من عند Snippet.Thumbnails. (المفتاح), ، يمكنك اختيار الصورة المصغرة الافتراضية أو المتوسطة أو عالية الدقة ، والحصول على عرضها وارتفاعها وعنوان URL.

يمكنك أيضًا تحديث الصور المصغرة مع Thumbnails-> مجموعة وظائف.

للحصول على أمثلة ، يمكنك التحقق من youtube API عينات مشروع. ((PHP منها.)

يمكنك الحصول على إدخال الفيديو الذي يحتوي على عنوان URL إلى صورة مصغرة للفيديو. هناك رمز مثال في الرابط. أو ، إذا كنت ترغب في تحليل XML ، فهناك معلومات هنا. عاد XML لديه أ media:thumbnail العنصر ، الذي يحتوي على عنوان 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 مملوكة لشركة 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 API الإصدار 3 صعودًا في دقيقتين

إذا كان كل ما تريد القيام به هو البحث في YouTube والحصول على الخصائص المرتبطة:

  1. احصل على واجهة برمجة التطبيقات العامة -- هذا الرابط يعطي اتجاه جيد

  2. استخدم أدناه سلسلة الاستعلام. استعلام البحث (يشار إليه بواسطة س =) في سلسلة عنوان URL Stackoverflow على سبيل المثال أغراض. سيقوم YouTube بعد ذلك بإرسال رد JSON حيث يمكنك بعد ذلك تحليل الصورة المصغرة ، والقرص ، والمؤلف ، إلخ.

    https://www.googleapis.com/youtube/v3/search؟part=id٪2CSnippet&maxresults=50&q=stackoverflow&key=your_api_key_here

يستخدم:

https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100&regionCode=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 متعددة ، في هذه الحالة ، الصور المصغرة ، مع طلب HTTP واحد:

باستخدام عميل REST ، في هذه الحالة ، 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);

?>

بديل جيد آخر هو استخدام Oembed API التي تدعمها YouTube.

يمكنك ببساطة إضافة عنوان URL الخاص بك على youtube إلى عنوان UMBED وستتلقى JSON بما في ذلك الصورة المصغرة ورمز HTML للتضمين.

مثال:

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

سوف يعطيك:

{
  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="https://www.youtube.com/embed/DLzxrzFCyOs?feature=oembed" frameborder="0" allowfullscreen></iframe>",
  title: "Some title bla bla foo bar",
  thumbnail_height: 360,
  provider_name: "YouTube",
  height: 344
}

اقرأ الوثائق للمزيد معلومة.

وظيفة PHP بسيطة قمت بإنشائها في صورة مصغرة على YouTube وأنواعها

  • إفتراضي
  • 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;}

إذا كنت تستخدم واجهة برمجة التطبيقات العامة ، فإن أفضل طريقة للقيام بذلك هي استخدامها 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>&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';
    }

youtube بيانات API

يوفر لنا YouTube الصور الأربعة التي تم إنشاؤها لكل مقطع فيديو من خلال API للبيانات (V3) ، على سبيل المثال ،

  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

  1. احصل أولاً على مفتاح API العام في وحدة تحكم Google API.
  2. حسب مرجع الصورة المصغرة في يوتيوب في وثائق API, ، تحتاج إلى الوصول إلى الموارد على SNIPPET.Thumbnails.
  3. وفقًا لهذا ، تحتاج إلى عبارة عنوان URL مثل هذا -

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

الآن قم بتغيير معرف الفيديو الخاص بك ومفتاح API الخاص بك إلى معرف الفيديو الخاص بك ومفتاح API ، وسيكون ردها بمثابة ناتج JSON يوفر لك الروابط الأربعة في صورة مصغرة من متغير SNIPPET (إذا كانت جميعها متوفرة).

يمكنك الحصول على معرف الفيديو من عنوان URL لفيديو YouTube باستخدام parse_url ,Parse_str ثم أدخل في عناوين URL التنبؤية للصور. بفضل YouTube على عناوين URL التنبؤية

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

يمكنك استخدام هذه الأداة لإنشاء صور مصغرة على YouTube

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

أعتقد أن لديهم الكثير من الإجابة على الصورة المصغرة ، لكنني أريد إضافة بعض عناوين URL الأخرى للحصول على صورة مصغرة على YouTube بسهولة بالغة. أنا فقط أخذ بعض النص من إجابة أساف. إليك بعض عناوين URL للحصول على صور مصغرة على YouTube:

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 مشابه لـ HQ:

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 أيضًا. بالإضافة إلى ذلك ، اسم المضيف أقصر قليلاً i3.ytimg.com يعمل بدلا من img.youtube.com في مثال عناوين URL أعلاه.

بدلاً من ذلك ، يمكنك استخدام youtube Data API (V3) للحصول على صور الصورة المصغرة.

طريقة 1:

يمكنك العثور على جميع المعلومات لمقطع فيديو على YouTube مع صفحة JSON التي تحتوي حتى على "Thumbnail_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 فيديو تعليمي 1

الطريقة 2:

باستخدام رابط صورة YouTube ،https://img.youtube.com/vi/"إدراج youtube-video-id-here" /default.jpg

الطريقة 3:

باستخدام رمز مصدر المتصفح للحصول على صورة مصغرة باستخدام رابط عنوان URL للفيديو -تنو إلى رمز مصدر الفيديو والبحث عن Thumbnailurl. الآن يمكنك استخدام عنوان URL هذا في رمز المصدر الخاص بك:

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

للحصول على التفاصيل يمكنك أيضًا رؤيتها كيفية الحصول على صورة مصغرة فيديو على YouTube باستخدام IDأوhttps://www.youtube.com/watch؟v=9f6e8mem6piالفيديو التعليمي 2

يستخدم 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;
}

احفظ هذا الرمز في ملف .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';
}

شكرًا.

public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top