使用 Vimeo API php 库请求特定的视频质量?

Request Specific Video Quality with Vimeo API php library?

我希望将 Vimeo 用作我网站上自己的视频播放器的 CDN,但我一直无法弄清楚如何为每种质量请求特定视频 URL。我希望做的是检索 3 个特定质量的 3 个特定视频链接:4k、3k 和 2k。

问题是 Vimeo 以数组形式提供视频数据,视频质量似乎是随机索引的。以下代码将为特定的 Vimeo ID 打印视频 URL,但索引为 0 的视频可能是 4k 版本、1080 高清版本、3k 版本……它是随机的。有没有办法过滤它以请求特定的视频质量? Vimeo 的 API 文档对过滤选项不是很清楚。

$config = require(__DIR__ . '/init.php');
$lib = new Vimeo($config['client_id'], $config['client_secret']);
if (!empty($config['access_token'])) {
    $lib->setToken($config['access_token']);
    $video = $lib->request('/me/videos/250665164');
} else {
    $user = $lib->request('/me');
}
?>

<?php print_r($video['body']['files'][0]['link']); ?>

这是数组结果的一个片段。我已截断它并删除了实际的 URLs。我考虑过遍历数组以根据 [width] 参数提取相关值,但我认为必须有一种更简单的方法可以使用 API 命令来执行此操作。

 [files] => Array
                (
                    [0] => Array
                        (
                            [quality] => sd
                            [type] => video/mp4
                            [width] => 960
                            [height] => 480
                            [link] => http://...
                            [created_time] => 2018-01-11T18:49:01+00:00
                            [fps] => 29.97
                            [size] => 5566399
                            [md5] => ba7546b1aa42aea63b9adad9d2d62b09
                            [link_secure] => https://...
                        )

                    [1] => Array
                        (
                            [quality] => hd
                            [type] => video/mp4
                            [width] => 4096
                            [height] => 2048
                            [link] => http://...
                            [created_time] => 2018-01-11T18:49:01+00:00
                            [fps] => 29.97
                            [size] => 82082650
                            [md5] => 0ba6049bb2aa75d52ddb934fde208cbc
                            [link_secure] => https://...
                        )

目前无法从 Vimeo 请求特定的视频文件质量 API。视频不以任何特定顺序返回 - 某些质量可能会先于其他质量完成转码,具体取决于原始视频的分辨率、视频的视觉复杂性、当时我们转码机器上的服务器负载,以及整个主机其他变量。现在,您需要获得完整的 files 响应并取出您需要的视频文件链接。

此外,抓取那些特定的视频文件时,最好根据 height/width 尺寸而不是 quality 来检索或过滤它们。所有尺寸超过 720p 的文件都被标记为来自 Vimeo 的 "quality":"hd"

最后,请注意 Vimeo 不会转码“3K”版本;对于 UHD 分辨率源视频,Vimeo 转码为 360p、540p、720p、1080p、1440p (2K) 和 3840p (4K)。更多信息在这里:https://vimeo.com/help/compression