【问题标题】:Dynamically get the length of a Vimeo Video via PHP通过 PHP 动态获取 Vimeo 视频的长度
【发布时间】: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 上,因为这是人们在我的网站上付费的课程视频,我不希望人们发现它们是免费的。有什么建议吗?

标签: php vimeo


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2015-09-12
    • 2018-05-23
    • 2011-09-07
    • 2013-05-09
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多