当前位置: 首页 > 知识库问答 >
问题:

如何使用YouTube API获取视频时长?[重复]

有凯泽
2023-03-14

我想知道Youtube视频的持续时间。以下是我尝试的代码:

$vidID="voNEBqRZmBc";
//http://www.youtube.com/watch?v=voNEBqRZmBc
$url = "http://gdata.youtube.com/feeds/api/videos/". $vidID;
$doc = new DOMDocument;
$doc->load($url);
$title = $doc->getElementsByTagName("title")->item(0)->nodeValue;

请检查XML文件。我得到了这个视频的标题。我想从<code>中获取持续时间

如何获取秒属性


共有3个答案

斜和硕
2023-03-14

使用SimpleXML的简短解决方案:

function getYouTubeVideoDuration($id) {
 $xml = simplexml_load_file('http://gdata.youtube.com/feeds/api/videos/'.$id);
 return strval($xml->xpath('//yt:duration[@seconds]')[0]->attributes()->seconds);
}
谷梁子昂
2023-03-14

这是YouTube API V3,带有获取视频时长的示例,但不要忘记在https://console.developers.google.com/project创建您的API密钥

     $vidkey = "cHPMH2sa2Q" ; video key for example 
$apikey = "xxxxxxxxxxxxxxxxxxxxx" ;
$dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vidkey&key=$apikey");
$VidDuration =json_decode($dur, true);
foreach ($VidDuration['items'] as $vidTime) 
{
$VidDuration= $vidTime['contentDetails']['duration'];
}
姬熙云
2023-03-14
  1. 首先在此处克隆Google API PHP客户端
  2. 接下来,您需要在此处创建一个新项目,打开“API和auth→API”部分下的YouTube数据API,并在此处向Google注册一个应用程序。
  3. 在“API和auth→凭据”下创建一个新的OAuth客户端ID,并将完整路径添加到重定向URI列表中。(即http://example.com/get_youtube_duration.php)
  4. 使用此代码(改编自此示例代码),同时确保在第3步中用您自己的值填充$OAUTH2_CLIENT_ID和$OAUTH2_CLIENT_SECRET变量。
  5. 硬编码$VideoId变量的值或使用video_idget参数(即http://example.com/get_youtube_duration.php?video_id=XXXXXXX)设置它
  6. 访问您的脚本,单击链接以授权该应用程序并使用您的google帐户获取令牌,该令牌将您重定向回您的代码并显示持续时间。

这是您的输出:

Video Duration

0 mins

29 secs

一些额外资源:https://developers.google.com/youtube/v3/docs/videos#contentDetails.duration https://developers.google.com/youtube/v3/docs/videos/list

这适用于我,基于源中只有一个持续时间元素的假设。

<?php

$vidID="voNEBqRZmBc";
//http://www.youtube.com/watch?v=voNEBqRZmBc
$url = "http://gdata.youtube.com/feeds/api/videos/". $vidID;
$doc = new DOMDocument;
$doc->load($url);
$title = $doc->getElementsByTagName("title")->item(0)->nodeValue;
$duration = $doc->getElementsByTagName('duration')->item(0)->getAttribute('seconds');

print "TITLE: ".$title."<br />";
print "Duration: ".$duration ."<br />";

输出:

TITLE: Introducing iTime
Duration: 29
 类似资料:
  • 我们有一个网站,显示我们的YouTube视频频道和我们频道中最喜欢的视频等。我们使用YouTube数据API v2.0来获取数据。 例如: https://gdata.youtube.com/feeds/api/users/“ 用户标识 ”/播放列表?v=2 但现在这些链接返回“NetworkError: 410 Gone”。我们检查了新的YouTube Javascript API,但我们不知道

  • 所以我试图从用户上传的视频中抓取10个最新视频。 现在唯一的问题是,播放列表请求中唯一可见的日期是已发布的,这是视频上传的日期 - 而不是公开的日期,这会产生巨大的差异。 我注意到我可以通过视频请求获取正确的日期,但它似乎不是最好的地方。 让我给你看一个我正在处理的例子。 我们走Maroon5频道吧。 forUserName: Maroon5VEVO 获取 https://www.googleap

  • 我正在研究YouTubeAPI:https://developers.google.com/youtube/v3/docs/search/list 但是我找不到通过HTTP请求获取360视频列表的任何参数。我想获取q参数为“Ronaldo”的360视频(例如) 有没有人知道如何通过HTTP请求获取360视频或者另一种获取360视频的解决方案?

  • 问题内容: 我正在做一个使用HTML和Javascript的项目,它将与本地文件一起在本地运行。我需要通过输入选择一个文件,获取文件信息,然后决定是否将其添加到列表中并进行复制。如果我决定使用它,则必须将其放在队列中以备后用。否则,我将丢弃并选择另一个文件。 我面临的问题是我无法找到一种仅通过在输入中选择视频持续时间来获得视频持续时间的方法。 我进行了很多搜索,但没有找到任何方法来获取持续时间。在

  • 我已经在PC上使用pip ffprobe命令安装了ffprobe,并从这里安装了ffmpeg。 然而,我仍然在运行这里列出的代码时遇到麻烦。 我尝试使用下面的代码,但没有成功。 有人知道怎么了吗?我没有正确引用目录吗?是否需要确保和视频文件位于特定位置? 如果这个问题有点基本的话,我很抱歉。所有我需要的是能够迭代一组视频文件,并获得他们的开始时间和结束时间。 谢谢!

  • 目前,我使用它是为了从给定频道获得视频ID列表: 去找https://www.googleapis.com/youtube/v3/search?order=date 这是可行的,但是我想从中获取视频的频道有超过50个在线视频。我已经研究过这个问题,YouTube API可以在一个频道上获取所有视频,但每个在线解决方案最多只能获取50个视频。 我怎样才能得到每一个视频,而不仅仅是50个?