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


Dynamically get the length of a Vimeo Video via PHP

我从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

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

如果视频有嵌入任何地方的隐私,您可以使用oEmbed来检索嵌入代码和持续时间。可以在这里找到相关文档:https://developer.vimeo.com/apis/oembed

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

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

  • https://developer.vimeo.com/api/start
  • https://developer.vimeo.com/api/spec
  • https://developer.vimeo.com/api/authentication

你也可以在这里找到官方的PHP库:https://developer.vimeo.com/api/libraries