首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 取得 YouTube 與 Vimeo 影片縮圖:parse_url + API 實戰

     編輯:PHP 綜合知識

需求背景

使用者貼上影片連結,系統自動抓取縮圖顯示預覽,無需使用者手動上傳封面。

完整函式

<?php
function video_image($url) {
    $parsed = parse_url($url);
    $host = strtolower($parsed['host'] ?? '');

    // YouTube 標準網址:youtube.com/watch?v=VIDEO_ID
    if (in_array($host, ['www.youtube.com', 'youtube.com'])) {
        parse_str($parsed['query'] ?? '', $query);
        $vid = $query['v'] ?? '';
        return $vid ? "https://img.youtube.com/vi/{$vid}/0.jpg" : '';
    }

    // YouTube 短網址:youtu.be/VIDEO_ID
    if (in_array($host, ['www.youtu.be', 'youtu.be'])) {
        $path = trim($parsed['path'] ?? '', '/');
        $vid = explode('/', $path)[0] ?? '';
        return $vid ? "https://img.youtube.com/vi/{$vid}/0.jpg" : '';
    }

    // Vimeo:vimeo.com/VIDEO_ID
    if (in_array($host, ['www.vimeo.com', 'vimeo.com'])) {
        $video_id = trim($parsed['path'] ?? '', '/');
        if ($video_id) {
            $api = "https://vimeo.com/api/v2/video/{$video_id}.json";
            $data = @file_get_contents($api);
            if ($data) {
                $arr = json_decode($data, true);
                return $arr[0]['thumbnail_medium'] ?? '';
            }
        }
    }
    return '';
}
?>

使用範例

<img src="<?php echo video_image('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); ?>" alt="YouTube 縮圖">
<img src="<?php echo video_image('https://youtu.be/dQw4w9WgXcQ'); ?>" alt="YouTube 短網址縮圖">
<img src="<?php echo video_image('https://vimeo.com/123456789'); ?>" alt="Vimeo 縮圖">

關鍵點補充

  1. YouTube 縮圖尺寸:0.jpg (480x360)、1.jpg、2.jpg、3.jpg (120x90)、default.jpg、mqdefault.jpg (320x180)、hqdefault.jpg (480x360)、sddefault.jpg (640x480)、maxresdefault.jpg (1280x720,僅高畫質影片)。
  2. Vimeo API 版本:範例用 v2 (無需 API Key),官方已建議遷移至 v3 (需 OAuth),長期專案請申請 API Key 使用 https://api.vimeo.com/videos/{id}/pictures。
  3. 錯誤處理:@file_get_contents 抑制警告,生產環境建議用 cURL 設定 timeout、重試、User-Agent。
  4. HTTPS:全部改用 https:// 協定,避免混合內容警告。

擴充:支援更多平台

同理可擴充支援 Dailymotion、Facebook、Bilibili 等,只需:

  1. 識別 host 與 ID 位置(query、path、fragment)。
  2. 呼叫對應平台的 oEmbed 或官方 API 取得縮圖 URL。
  3. 快取結果(Redis/檔案),避免重複請求外部 API。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved