【发布时间】:2016-11-02 12:58:22
【问题描述】:
我从 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
【问题讨论】:
-
您是否检查过您从 curl 调用中获得的响应?
-
@PatrickQ 我发现如果我将隐私设置更改为“任何人”都可以观看此视频,但我需要将其隐藏在 Vimeo 上,因为这是人们在我的网站上付费的课程视频,我不希望人们发现它们是免费的。有什么建议吗?