Câu hỏi Làm cách nào để có hình thu nhỏ video YouTube từ API YouTube?


Nếu tôi có URL video YouTube, có cách nào để sử dụng PHP và cURL để tải hình thu nhỏ được liên kết từ API YouTube không?


2025
2018-01-14 23:34


gốc


Dưới đây là một số hàm PHP tôi đã tạo để có được hình thu nhỏ tốt nhất có sẵn từ phương thức URL bằng cách ping API, dựa trên nhiều câu trả lời hay trên trang này: gist.github.com/squarecandy/30ec9f6779c0e8cdf12e337c665d96c5 - squarecandy


Các câu trả lời:


Mỗi video trên YouTube có 4 hình ảnh được tạo. Chúng được dự đoán định dạng như sau:

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

Người đầu tiên trong danh sách là hình ảnh có kích thước đầy đủ và một số khác là hình thu nhỏ. Hình thu nhỏ mặc định (ví dụ: một trong 1.jpg, 2.jpg, 3.jpg) Là:

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

Đối với phiên bản chất lượng cao của hình thu nhỏ, hãy sử dụng url tương tự như sau:

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

Ngoài ra còn có một phiên bản chất lượng trung bình của hình thu nhỏ, sử dụng một url tương tự như HQ:

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

Đối với phiên bản định nghĩa chuẩn của hình thu nhỏ, hãy sử dụng url tương tự như sau:

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

Đối với phiên bản có độ phân giải tối đa của hình thu nhỏ, hãy sử dụng url tương tự như sau:

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

Tất cả các url trên đều có sẵn trên http. Ngoài ra, tên máy chủ ngắn hơn một chút i3.ytimg.com làm việc thay cho img.youtube.com trong url ví dụ ở trên.

Ngoài ra, bạn có thể sử dụng API dữ liệu YouTube (v3) để có hình thu nhỏ.


3883
2018-01-14 23:40



Làm thế nào để bạn có được hình ảnh độ nét cao (nếu có)? - trusktr
Chỉ trong trường hợp bất kỳ ai khác mắc phải sai lầm ngu ngốc này - bạn không thể sử dụng http://www.img.youtube.com, chỉ có http://img.youtube.com - Ciaran Phillips
@NickG mqdefault là 16: 9 - tomtastico
đây có phải là nơi chính thức được ghi chép không? - bjunix
@ clami219 đó là sai quá - rõ ràng hoạt động (2015-04): i.ytimg.com/vi_webp/EhjdWfxjuHA/sddefault.webp, sự thật: sddefault và maxresdefault KHÔNG PHẢI CÓ một số video có chúng mặc dù .... - jave.web


Bạn có thể dùng API dữ liệu YouTube để truy xuất hình thu nhỏ video, chú thích, mô tả, xếp hạng, thống kê và hơn thế nữa. API phiên bản 3 yêu cầu khóa *. Lấy khóa và tạo video: danh sách yêu cầu:

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

Mã PHP ví dụ

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

Đầu ra

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

* Không chỉ bạn cần một khóa, bạn có thể được yêu cầu cung cấp thông tin thanh toán tùy thuộc vào số lượng yêu cầu API bạn dự định thực hiện. Tuy nhiên, vài triệu yêu cầu mỗi ngày là miễn phí.

Bài viết nguồn.


358
2018-01-21 09:58



FYI: tôi không thay đổi mã để phù hợp với cấu trúc JSON mới. Mã trong getJSON của bạn là sai. Bạn đã dùng jsonc thay vì json cho getJSON. Nó không thành công vì cấu trúc JSON sai của bạn. - mauris
Chỉ ví dụ đầu tiên mới có thể sử dụng jsonc. Các ví dụ về jQuery và PHP PHẢI sử dụng json. Và tôi đã cập nhật mã để phù hợp với cấu trúc JSON mới. Tôi đang sử dụng mã ngay bây giờ và nó đang hoạt động TRỰC TIẾP. vì vậy đừng nói rằng nó không hoạt động mà không đọc các thay đổi. Cảm ơn! - mauris
Các ví dụ về jQuery và PHP PHẢI sử dụng json... bạn có thể cung cấp một tham chiếu? Ngoài ra, yêu cầu một số phiên bản API cụ thể (v=2) chăm sóc các thay đổi API. - Salman A
Cuộc gọi gdata không trả lại cho dù maxresdefault.jpg có sẵn cho những video có sẵn, chỉ mq / hq / sd. - Aaron
Điều này không hoạt động trong api v3 thực tế - Mario Gonzales Flores


Những gì Asaph nói là đúng. Tuy nhiên, không phải mọi video trên YouTube đều chứa tất cả chín hình thu nhỏ nhưng có bảy hình thu nhỏ cho mỗi video. Họ đang:

(Kích thước hình ảnh tùy thuộc vào video.)

  • Hình thu nhỏ nền của trình phát (480x360 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Bắt đầu hình thu nhỏ (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • Hình thu nhỏ giữa (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • Hình thu nhỏ cuối cùng (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • Hình thu nhỏ chất lượng cao (480x360 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • Hình thu nhỏ chất lượng trung bình (320x180 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • Hình thu nhỏ chất lượng bình thường (120x90 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

Ngoài ra, hai hình thu nhỏ tiếp theo có thể hoặc không tồn tại. Dành cho video HQ chúng tồn tại.

  • Hình thu nhỏ độ phân giải chuẩn (640x480 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • Hình thu nhỏ độ phân giải tối đa (1920x1080 pixel)
    https://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

Bạn có thể lấy các tập lệnh JavaScript và PHP để truy xuất hình thu nhỏ và các tập lệnh khác Thông tin YouTube trong

Cũng sử dụng công cụ Trình tạo thông tin video trên YouTube để có được tất cả thông tin của video trên YouTube bằng cách gửi URL hoặc ID video.


199
2017-12-12 11:17



Bạn cũng có thể đạt được kết quả tương tự với liên kết youtube chính thức img.youtube.com/vi/mJ8tq8AnNis/mqdefault.jpg trong đó mJ8tq8AnNis là id video - Ragaisis
Đôi khi những người nhất định không tồn tại - i1.ytimg.com/vi/r5R8gSgedh4/maxresdefault.jpg là không có thật i1.ytimg.com/vi/r5R8gSgedh4/0.jpg là ok ví dụ. - NoBugs
Cảm ơn bạn đã đăng bài này. Bạn có nguồn cho dữ liệu này không? Nó là chính xác, nhưng tôi muốn một liên kết đến một cái gì đó từ Youtube / Google về điều này và không thể tìm thấy một. - Jonathan Vanasco
@ JonathanVanasco, xin lỗi. Nếu bạn có nghĩa là một nguồn lực chính thức cho nội dung chính xác, tôi không biết bất kỳ. Và tôi không nghĩ rằng có một mục đích xuất bản một cái gì đó như thế từ quan điểm của họ. - AGMG
bất kỳ cách nào để có được 1.jpg ở độ phân giải cao hơn nếu tôi đã thiết lập một cái gì đó khác như một hình thu nhỏ? - dietbacon


Trong API YouTube V3, chúng tôi cũng có thể sử dụng các URL này để nhận hình thu nhỏ ... Chúng được phân loại dựa trên chất lượng của chúng.

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

Và cho độ phân giải tối đa ..

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

Một lợi thế của các URL này trên URL trong câu trả lời đầu tiên là các URL này không bị chặn bởi tường lửa.


66
2017-08-23 10:23



Những hình ảnh này giả sử được đặt trong thẻ img và chỉ hoạt động vì tôi đang cố gắng đưa liên kết vào đúng id video youtube và đặt chúng trong thẻ img nhưng tôi vẫn nhận được 404 - Lion789
@ Lion789 Các URL này hoạt động tốt khi được đặt trong thẻ img .. Vấn đề có thể là Id video sai hoặc độ phân giải được yêu cầu có thể không khả dụng nhưng bạn sẽ không nhận được 404 với các lỗi này.Vui lòng kiểm tra url của thẻ img. - Naren
Có phải xác nhận rằng các url sẽ tiếp tục hoạt động sau khi API v2 sẽ bị dừng không? - Daniele B
@DanieleB Các URL này vẫn hoạt động. Bạn có biết cách kiểm tra xem các URL này có hoạt động sau API v2 không? - Naren


Nếu bạn muốn hình ảnh lớn nhất từ ​​YouTube cho một ID video cụ thể thì URL phải giống như sau:

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

Sử dụng API, bạn có thể chọn hình thu nhỏ mặc định. Mã đơn giản phải là một cái gì đó như thế này:

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

46
2017-12-22 05:44



Tôi đã tìm thấy ví dụ trong đó 0.jpg có độ phân giải 480x360, trong khi maxresdefault.jpg có 1280x720 - Nico Haase


Nếu bạn muốn loại bỏ "thanh màu đen" và làm như YouTube, bạn có thể sử dụng:

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

Và nếu bạn không thể sử dụng .webp bạn có thể làm như sau:

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

Ngoài ra, nếu bạn cần sử dụng phiên bản chưa được đánh giá maxresdefault thay vì mqdefault.

Lưu ý: Tôi không chắc chắn về tỷ lệ khung hình nếu bạn định sử dụng maxresdefault.


39
2018-06-08 11:59



định dạng .webp không hoạt động trong Firefox - Guilherme Carlos
Trong trường hợp đó https://i.ytimg.com/vi/<video id>/mqdefault.jpg. - LuTz
Cảm ơn, tôi đã tìm kiếm hình thu nhỏ mà không có những thanh blackbars cho HD (1920x1080) và điều này chỉ làm việc cho tôi! Genius @LuTz! - Aaron Belchamber
Tính năng này không khả dụng cho nhiều video. Ví dụ: i.ytimg.com/vi_webp/mJ8tq8AnNis/mqdefault.webp - NickG
@NickG: Nó hoạt động nếu bạn xóa _webp và thay đổi phần mở rộng thành .jpg. Ví dụ làm việc: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , Tôi không chắc chắn về tỷ lệ khung hình. - LuTz


Tôi đã thực hiện một chức năng để chỉ tìm nạp các hình ảnh hiện có từ 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;
}

27
2017-12-18 10:29





Trong API dữ liệu YouTube v3, bạn có thể nhận hình thu nhỏ của video bằng video-> danh sách chức năng. Từ snippet.thumbnails. (khóa), bạn có thể chọn hình thu nhỏ có độ phân giải mặc định, trung bình hoặc cao và có chiều rộng, chiều cao và URL của nó.

Bạn cũng có thể cập nhật hình thu nhỏ bằng thumbnails-> set chức năng.

Ví dụ, bạn có thể xem Mẫu API YouTube dự án. (PHP.)


26
2018-05-28 17:45



Tôi đoán đây là cách phù hợp để làm điều đó vì nó đến từ một thành viên quan hệ với Google Dev cho youtube api - Adonis K. Kakoulidis


Bạn có thể lấy Mục nhập video có chứa URL đến hình thu nhỏ của video. Có mã ví dụ trong liên kết. Hoặc, nếu bạn muốn phân tích cú pháp XML, có thông tin đây. XML trả về có một media:thumbnail phần tử chứa URL của hình thu nhỏ.


25
2018-01-14 23:40



Tôi không thể lấy nó ra bằng cách sử dụng simpleXML. Nó khá khó! - Aditya M P