如何获取vimeo视频的长度?

问题描述 投票:0回答:5

我遇到了一个大问题。问题是如何获取vimeo视频的时长?这是场景。

我在此字段中有一个输入字段,表示我现在输入 YouTube 网址 验证视频长度只能为 1 分钟,如果是,那么我 将其存储在数据库中,否则我会显示错误消息。

是否可以对 vimeo 视频文件执行此操作?

php javascript vimeo
5个回答
5
投票

用法

echo vimeoVideoDuration('https://vimeo.com/115134273');
// output: 63 (video duration in seconds)

功能

/**
* Vimeo video duration in seconds
*
* @param $video_url
* @return integer|null Duration in seconds or null on error
*/
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; // in seconds
}

3
投票

Vimeo 现在有一个新的 API,请在此处查看: vimeo API

您所需要的只是:
1. 在您的 vimeo 帐户下创建一个应用程序 https://developer.vimeo.com/apps
2. 获取您的 vimeo 应用程序的 client_id、client_secret、client_token;
3. 使用官方库之一(php、python、node):https://github.com/vimeo

这非常简单,但不要忘记优化我们的 API 调用,如下所示,因为 vimeo api 有速率限制: https://developer.vimeo.com/api/common-formats#json-filter


2
投票

是的,事实上它在他们的

Simple API

http://vimeo.com/api/docs/simple-api

持续时间 视频的持续时间(以秒为单位)


2
投票

根据视频的不同,您可能需要进行身份验证。 这是我编写的代码:

public function getVimeoVideoDuration($vimeoId)
    {
        $authorization = 'myaccesstoken';
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://api.vimeo.com/videos/{$vimeoId}",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "GET",
            CURLOPT_HTTPHEADER => array(
                "authorization: Bearer {$authorization}",
                "cache-control: no-cache",
            ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);
        if (empty($err)) {
            $info = json_decode($response);
            if(isset($info->duration)){
                return (int)$info->duration;
            }
        }
        return false;
    }

可以在此处索取授权码。


0
投票

函数 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;

返回$持续时间; // 以秒为单位返回 } echo vimeoVideoDuration('https://vimeo.com/547217109');

© www.soinside.com 2019 - 2024. All rights reserved.