我希望在我的网站上使用Vimeo作为我自己的视频播放器的CDN,但我一直无法弄清楚如何为每种质量请求特定的视频网址。我希望做的是为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']); ?>
这是数组结果的片段。我已将其截断并删除了实际的网址。我曾考虑在数组中循环以根据[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://...
)
答案 0 :(得分:0)
目前无法从Vimeo API请求特定的视频文件质量。视频不会以任何特定顺序返回 - 某些特性可能会在其他视频之前完成转码,具体取决于原始视频的分辨率,视频的视觉复杂性,当时我们的转码机上的服务器负载以及整个主机其他变量。目前,您需要获取整个files
响应并获取所需的视频文件链接。
此外,在抓取这些特定视频文件时,最好检索它们或根据它们的高度/宽度尺寸过滤它们,而不是按quality
过滤它们。维度超过720p的所有文件都标记为来自Vimeo的"quality":"hd"
。
最后,请注意Vimeo不会转码“3K”版本;对于UHD分辨率源视频,Vimeo转码为360p,540p,720p,1080p,1440p(2K)和3840p(4K)。更多信息:https://vimeo.com/help/compression