通过PHP动态获取Vimeo视频的长度

通过PHP动态获取Vimeo视频的长度,php,vimeo,Php,Vimeo,我从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 .

我从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;
}
当I
echo VimeVideoDuration('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

看起来该函数使用了旧的简单API(注意格式:
http://vimeo.com/api/v2/video/*
),只能与vimeo.com上的公共视频一起使用

如果视频具有embed anywhere隐私,则可以使用oEmbed检索嵌入代码和持续时间。相关文档可在以下位置找到:

(编辑:oEmbed也可用于域级隐私视频!)

如果视频是私有的,并且具有域级隐私,则需要在Vimeo开发者站点上创建一个API应用程序,并验证您对数据API的请求。此处的文档:


你也可以在这里找到官方PHP库:

你检查过从curl调用中得到的响应吗?@PatrickQ我发现如果我将隐私设置更改为“任何人”都可以查看此视频,但我需要将其隐藏在Vimeo上,因为这是一个课程视频,人们在我的网站上付费,我不希望人们发现它们是免费的。有什么建议吗?