通过PHP

时间:2016-11-02 12:58:23

标签: 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 . '.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

1 个答案:

答案 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