使用 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
我希望将 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