我发现了一个来自Stack的函数来获取Vimeo视频的长度,该视频在原始代码上提供的视频ID工作正常但在我更改它时似乎不起作用...
有人可以帮忙吗?
功能:
function vimeoVideoDuration($video_url) {
$video_id = (int)substr(parse_url($video_url, PHP_URL_PATH), 1);
$json_url = 'http://vimeo.com/api/v2/video/' . $video_id . '.xml';
$ch = curl_init($json_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
$data = new SimpleXmlElement($data, LIBXML_NOCDATA);
if (!isset($data->video->duration)) {
return null;
}
$duration = $data->video->duration;
return $duration;
}
当我echo vimeoVideoDuration('https://vimeo.com/115134273');
时,该视频的秒数非常出色。
但是,如果我将其更改为我自己的视频ID,我的错误日志中会出现几个错误...我在下面提供了这些错误:
[02-Nov-2016 12:57:20 UTC] PHP Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, '<' not found in /manage/view-module.php on line 28
[02-Nov-2016 12:57:20 UTC] PHP Warning: SimpleXMLElement::__construct(): 149029246 not found. in /manage/view-module.php on line 28
[02-Nov-2016 12:57:20 UTC] PHP Warning: SimpleXMLElement::__construct(): ^ in /manage/view-module.php on line 28
[02-Nov-2016 12:57:20 UTC] PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /manage/view-module.php:28
Stack trace:
#0 /manage/view-module.php(28): SimpleXMLElement->__construct('149029246 not f...', 16384)
#1 /manage/view-module.php(51): vimeoVideoDuration('https://vimeo.c...')
#2 {main}
thrown in /manage/view-module.php on line 28
答案 0 :(得分:1)
看起来该功能使用旧的Simple API(请注意格式:http://vimeo.com/api/v2/video/*
),该API只能用于vimeo.com上的公共视频。
如果视频嵌入了隐私,您可以使用oEmbed来检索嵌入代码和持续时间。有关该文档的文档可在此处找到:https://developer.vimeo.com/apis/oembed
(编辑:oEmbed也可用于域级隐私视频!)
如果视频是私有的并且具有域级隐私,则您需要在Vimeo开发者网站上创建API应用并验证您对数据API的请求。文档:
您还可以在此处找到官方PHP库:https://developer.vimeo.com/api/libraries