获取YouTube视频长度返回错误值

时间:2015-05-14 09:12:46

标签: php api video youtube youtube-api

我正在使用此功能在几秒钟内获得YouTube视频长度

function getDuration($url){
parse_str(parse_url($url,PHP_URL_QUERY),$arr);
$video_id=$arr['v'];
$data=@file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$video_id.'?v=2&alt=jsonc');
if (false===$data) return false;
$obj=json_decode($data);
return $obj->data->duration;
}

但所有视频都会像这段视频一样返回持续时间236,其持续时间为42分45秒这里的样本

http://gdata.youtube.com/feeds/api/videos/gXGn06tuvZM?v=2&alt=jsonc

这是函数或youtube api的错误,因为当我打开youtube网站时,我注意到所有视频的持续时间已经如图所示

enter image description here

2 个答案:

答案 0 :(得分:1)

GData API已经停用,并且只返回不支持的"设备"视频,无论你发送什么请求(我猜,这是236秒)。您需要切换到API的V3。

答案 1 :(得分:0)

按照以下步骤创建新应用并获取新的API密钥google documentation然后使用此回答stackoverflow question然后将持续时间拆分为数组并检索值很简单

https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails
&key={YOUR_API_KEY}