我遇到了一个大问题。问题是如何获取vimeo视频的时长?这是场景。
我在此字段中有一个输入字段,表示我现在输入 YouTube 网址 验证视频长度只能为 1 分钟,如果是,那么我 将其存储在数据库中,否则我会显示错误消息。
是否可以对 vimeo 视频文件执行此操作?
用法
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
}
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
根据视频的不同,您可能需要进行身份验证。 这是我编写的代码:
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;
}
可以在此处索取授权码。
函数 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');