我遇到了一个大问题。问题是如何获得vimeo视频的持续时间?这是场景。
我在这个字段中有一个输入字段说我现在输入你想要的youtube url 验证视频应该只有1分钟,如果是,那么我 将其存储在数据库中,否则我会显示错误消息。
是否有可能为vimeo视频文件做这件事?
答案 0 :(得分:4)
<强>用法强>
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
}
答案 1 :(得分:3)
答案 2 :(得分: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;
}
可以请求授权码here。
答案 3 :(得分:0)
Vimeo现在有一个新的API,请点击此处: vimeo api
你所需要的只是:
1.在此https://developer.vimeo.com/apps下,在您的vimeo帐户下创建一个应用程序
2.获取vimeo app的client_id,client_secret,client_token;
3.使用其中一个官方lib(php,python,node):https://github.com/vimeo
这很容易,但不要忘记优化我们的API调用,因为这里说因为vimeo api有一个速率限制: https://developer.vimeo.com/api/common-formats#json-filter