如何通过Vimeo PHP SDK获取匹配视频分辨率且无黑边的缩略图?
解决Vimeo竖屏视频缩略图黑边问题
要选到匹配视频分辨率、无黑边的缩略图,核心思路是根据视频原生宽高比筛选对应比例的最高分辨率缩略图,具体操作如下:
获取视频原生宽高比
从Vimeo SDK返回的视频数据中,提取width和height字段,计算视频的宽高比(例如竖屏视频的宽高比会小于1)。遍历缩略图列表筛选匹配项
遍历pictures.sizes数组中的每个缩略图条目,计算其宽高比,找到与视频原生比例一致的条目;如果存在多个匹配项,选择分辨率(宽×高)最大的那个。直接使用匹配的缩略图链接
匹配到的缩略图链接默认不会带有?r=pad参数,Vimeo会为比例匹配的缩略图提供无黑边的原生适配版本,直接使用即可。
PHP示例代码
// 假设$video是Vimeo SDK返回的视频数据对象/数组 $videoWidth = $video['width']; $videoHeight = $video['height']; $videoRatio = $videoWidth / $videoHeight; $bestThumbnail = null; $maxRes = 0; foreach ($video['pictures']['sizes'] as $pic) { $picRatio = $pic['width'] / $pic['height']; // 用微小误差范围处理浮点精度问题 if (abs($picRatio - $videoRatio) < 0.001) { $currentRes = $pic['width'] * $pic['height']; if ($currentRes > $maxRes) { $maxRes = $currentRes; $bestThumbnail = $pic['link']; } } } // 极端情况无匹配项时,回退到原最高分辨率逻辑 if (!$bestThumbnail) { $bestThumbnail = end($video['pictures']['sizes'])['link']; }
内容的提问来源于stack exchange,提问作者caevv
相关产品推荐
相关产品推荐

