强制为 YouTube 提供高质量缩略图

Posted

技术标签:

【中文标题】强制为 YouTube 提供高质量缩略图【英文标题】:Force High Quality Thumbnails for YouTube 【发布时间】:2012-02-21 14:10:33 【问题描述】:

有没有办法强制为 YouTube 提供高质量的缩略图?

我的视频质量非常高,一旦开始流式传输,它们在 720p 下运行良好,但是视频的缩略图质量参差不齐 - 有时质量很高,有时真的很模糊。

有没有办法强制生成高质量的缩略图?我在 API 文档中找到了这个 - http://code.google.com/apis/youtube/2.0/reference.html#youtube%5Fdata%5Fapi%5Ftag%5Fmedia:thumbnail 但它没有详细说明如何使用媒体标签。

【问题讨论】:

【参考方案1】:

还有一个“maxres”版本,如果视频分辨率足够高,它是“全高清”图片。

http://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg

但是,如果视频分辨率不够高,则似乎无法创建此图像。因此,如果“maxres”版本不存在,您可能需要一个显示较低质量版本的功能。

查看How do I get a YouTube video thumbnail from the YouTube API? 了解更多信息。

【讨论】:

嗯,我的视频是 780p,但播放质量很高,但缩略图质量是可变的。问题不在于猜测缩略图,而是让 YouTube 将其显示在“播放”符号下方。不过目前看来不可能。 我不知道您使用的是什么视频或尺寸,但是当我尝试嵌入另一个高清视频时,如果视频播放器对象太小,它似乎会加载低分辨率图片。当我将相同的视频嵌入到大型播放器(即 1000x700)中时,我得到了最大分辨率版本。 感谢您的网址。有没有办法强制在嵌入视频播放器中使用它? 我认为您的 iframe 网址中的要求是 &hd=1,并且 iframe 必须大于 1280x720 像素,但我不能发誓。【参考方案2】:

谢谢约翰的回答。

http://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg

如果您还想将播放设置为 HQ,请使用 javascript API https://developers.google.com/youtube/js_api_reference?hl=fi-FI#Playback_quality

var qualityLevels = self.players[iframeID].getAvailableQualityLevels();
/* Set highest quality */
self.players[iframeID].setPlaybackQuality(qualityLevels[0]);

为了让它工作,我们首先需要调用:

self.players[iframeID].playVideo();

然后它会触发

self.players[iframeID] = new YT.Player(iframeID, 
                        events: 
                            'onReady': function(event) 
                                var iframe = $(event.target.getIframe());

                                self.players[iframe.attr('id')].loaded = true;
                            ,
                            'onStateChange': function(event) 
                                var iframe = $(event.target.getIframe());
                                var iframeID = iframe.attr('id');

                                if(event.data == 1) /* playing */
                                
                                    var qualityLevels = self.players[iframeID].getAvailableQualityLevels();

                                    if(self.players[iframeID].getPlaybackQuality() != qualityLevels[0])
                                    
                                        /* Set highest quality */
                                        self.players[iframeID].setPlaybackQuality(qualityLevels[0]);
                                    
                                
                            
                        
                    );

【讨论】:

【参考方案3】:

例子:

http://img.youtube.com/vi/xjFouf6j81g/hqdefault.jpg

其中 xjFouf6j81g,视频 ID

【讨论】:

您的回复是唯一对我有用的回复,即使在多个线程中也是如此。谢谢。 该链接是 YouTube API V3 或更低版本的一部分吗?因为如果它来自 V2 或更低版本,那么我很确定 Google 会弃用它? @Dmitriy - 见:jsoneditoronline.org/?id=eb9de39901849211fd7fc42daabc6c0b。此 json 用于视频 ID:C2omic5yWRQ。它的 maxresdefault.jpg 的分辨率为 1280x720,而 hqdefault.jpg 只有 480x360。 @saurabheights 这个 JSON 是从哪个 URL 请求的? @agrath:youtube.com/watch?v=C2omic5yWRQ。制作很简单,打开任何 youtube 视频并替换 v 参数的值。【参考方案4】:

据我所知,YouTube 只提供 4 个缩略图:

http://i.ytimg.com/vi/VIDEO_ID/default.jpg
http://i.ytimg.com/vi/VIDEO_ID/1.jpg
http://i.ytimg.com/vi/VIDEO_ID/2.jpg
http://i.ytimg.com/vi/VIDEO_ID/3.jpg

缩略图在上传后生成一次,因此您无法以任何方式更改它们的大小。

编辑: YouTube JS API 可以让你强制视频质量,但不知道会不会影响视频预览。请参阅the docs 了解更多信息。

【讨论】:

谢谢,但是如何将它们应用到视频中,以便在“播放”按钮下显示高质量的缩略图?【参考方案5】:

问题已在此处报告:https://code.google.com/p/gdata-issues/issues/detail?can=2&start=0&num=100&q=&colspec=API%20ID%20Type%20Status%20Priority%20Stars%20Summary&groupby=&sort=&id=4590

不是修复或解决方法,但如果您想避免获得低分辨率缩略图,您的播放器应该大于 430px 宽。

因此,完美 16:9 纵横比的建议最小尺寸为 432 x 243 pixels,这应该会得到一个漂亮的缩略图。

【讨论】:

以上是关于强制为 YouTube 提供高质量缩略图的主要内容,如果未能解决你的问题,请参考以下文章

提高 YouTube 缩略图质量?

Youtube没有加载高分辨率缩略图

Javascript - 检测 Youtube 默认缩略图

从 YouTube API 中获得 YouTube 视频的缩略图

如何使用 php 获取 youtube 和 vimeo 嵌入代码的视频缩略图?

获取 YouTube 视频缩略图并将其与 PHP 一起使用