首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用YouTube API版本3获取视频时长?

如何使用YouTube API版本3获取视频时长?
EN

Stack Overflow用户
提问于 2013-03-24 17:10:08
回答 5查看 112.1K关注 0票数 105

我正在使用YouTube接口v3搜索YouTube。

https://developers.google.com/youtube/v3/docs/search

如您所见,响应JSON不包含视频时长。有没有办法获取视频时长?

最好不要再次为结果中的每个元素调用API (除非这是获取持续时间的唯一方法)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-25 08:23:00

在进行搜索调用之后,您必须调用YouTube data API的视频资源。您可以在一次搜索中输入最多50个视频it,因此您不必为每个元素调用它。

https://developers.google.com/youtube/v3/docs/videos/list

您需要设置part=contentDetails,因为有持续时间。

例如,下面的调用:

代码语言:javascript
运行
复制
https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}

结果如下:

代码语言:javascript
运行
复制
{
 "kind": "youtube#videoListResponse",
 "etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/ny1S4th-ku477VARrY_U4tIqcTw\"",
 "items": [
  {

   "id": "9bZkp7q19f0",
   "kind": "youtube#video",
   "etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/HN8ILnw-DBXyCcTsc7JG0z51BGg\"",
   "contentDetails": {
    "duration": "PT4M13S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "false",
    "licensedContent": true,
    "regionRestriction": {
     "blocked": [
      "DE"
     ]
    }
   }
  }
 ]
}

时间格式为ISO 8601字符串。PT代表时长,4M代表4分钟,13S代表13秒。

票数 143
EN

Stack Overflow用户

发布于 2015-03-29 15:08:08

这样啊,原来是这么回事!

代码语言:javascript
运行
复制
$dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vId&key=dldfsd981asGhkxHxFf6JqyNrTqIeJ9sjMKFcX4");

$duration = json_decode($dur, true);
foreach ($duration['items'] as $vidTime) {
    $vTime= $vidTime['contentDetails']['duration'];
}

在那里,它返回YouTube应用编程接口版本3的时间(顺便说一下,密钥是由;组成的)。我使用的$vId,我已经从返回的视频列表中的视频频道,我正在播放的视频来自…

它起作用了。谷歌真的需要在代码片段中包含持续时间,这样你就可以通过一次调用而不是两次调用来获得所有信息……它在他们的“未修好”清单上。

票数 14
EN

Stack Overflow用户

发布于 2016-07-13 17:53:22

此代码通过传入视频ID,使用YouTube接口v3提取YouTube视频时长,适用于我。

代码语言:javascript
运行
复制
<?php
    function getDuration($videoID){
       $apikey = "YOUR-Youtube-API-KEY"; // Like this AIcvSyBsLA8znZn-i-aPLWFrsPOlWMkEyVaXAcv
       $dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$videoID&key=$apikey");
       $VidDuration =json_decode($dur, true);
       foreach ($VidDuration['items'] as $vidTime)
       {
           $VidDuration= $vidTime['contentDetails']['duration'];
       }
       preg_match_all('/(\d+)/',$VidDuration,$parts);
       return $parts[0][0] . ":" .
              $parts[0][1] . ":".
              $parts[0][2]; // Return 1:11:46 (i.e.) HH:MM:SS
    }

    echo getDuration("zyeubYQxHyY"); // Video ID
?>

您可以在https://console.developers.google.com上获取您的域名的YouTube应用编程接口密钥,并根据自己的需求生成凭据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15596753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档