简而言之,服务器生成精灵图,并在需要时下载。
我们可以猜测这些图片是在服务器端生成的。YouTube对每个视频进行的处理比提取几个缩略图要复杂得多。另外,快速的谷歌搜索表明,这个功能已经存在了几年,可能比客户端所需的HTML5 / JS / 浏览器性能更长时间。
我在浏览器中点击了下载工具 > 资源
,并查看了我的订阅中的一个新发布的视频。有趣的是,在我检查时还没有预览图(该视频仅上线约20分钟)。这表明这些图像可能是在服务器端生成的,只是尚未完成处理。
检查一段旧视频并查看资源 > 图像
没有发现任何有趣的东西。所以我切换到时间轴
并开始录制,然后开始在时间轴上移动鼠标并观察网络流量。当我移动鼠标时,*.jpg
文件开始加载,它们包含了来自视频特定部分的25个缩略图:
M0.jpg
是同样大小的图像,但包含了整个视频中约100个缩略图,而不是一个段落中的25个缩略图。例如:
使用新视频进行测试后,看起来首先下载了包含基本低分辨率缩略图预览的100张图像M0.jpg
,然后当您将鼠标悬停在视频的不同部分时,会根据需要下载更高分辨率的M0.jpg
、M1.jpg
等。
有趣的是,对于更长的视频,这种情况并未改变,这就解释了为什么缩略图有时会很糟糕。如果您的连接或YouTube获取高分辨率缩略图速度过慢,则只能获得一个非常长的视频的100个低分辨率缩略图。不确定在较短的视频上如何运作。此外,看一下他们从哪里提取缩略图可能会很有趣(它是否只是每100分之一的视频线性分布?还是其他什么)。
最后一个细节是,我注意到如果您使用带有时间码的URL,则不会获得完整的100张图像M0.jpg
,而是包含大约25个从时间码到视频结尾的低分辨率缩略图的完全不同大小的M#.jpg
。
ffmpeg
是一个不错的选择: