我遇到了问题。如何获取YouTube视频的持续时间? 这是场景。
我在这个字段中有一个输入字段说我现在输入你想要的youtube url 验证视频应该只有1分钟,如果是,那么我 将其存储在数据库中,否则我会显示错误消息。
可以做这件事吗?
答案 0 :(得分:5)
您可以使用数据API获取视频的信息。您可能需要从URL中提取视频的标识符。
http://code.google.com/apis/youtube/2.0/developers_guide_php.html#Retrieving_Video_Entry
如果您正在使用Zend,那么已经有一个课程可以解决这个问题:
<?php
require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
$yt = new Zend_Gdata_YouTube();
$videoEntry = $yt->getVideoEntry('the0KZLEacs');
$duration = $videoEntry->getVideoDuration();
如果没有,您可以转到http://gdata.youtube.com/feeds/api/videos/{$videoId}
并获取XML文档以自行处理。
例如,http://gdata.youtube.com/feeds/api/videos/KURI9EQV3dY会返回视频的XML文档,其中包含的信息包括持续时间:<yt:duration seconds='153'/>
答案 1 :(得分:4)
根据他们的文档,In a video feed entry, the <yt:duration> tag specifies a video's length.
答案 2 :(得分:1)
以下代码将为您提供视频缩略图,标题和持续时间,来自网址。只需从最后更改youtube链接即可。
演示:http://100ro.ro/wp-includes/ajaxdemo/test.php?y=www.youtube.com/watch?v=V80jm1rs2UQ:
(注意:使用y = youtubeurl中没有http:// 的youtube网址)
<?php
getYoutubeImage($_GET["y"]);
function getYoutubeImage($e){
//GET THE URL
$url = $e;
$queryString = parse_url($url, PHP_URL_QUERY);
parse_str($queryString, $params);
$v = $params['v'];
// function to parse a video <entry>
function parseVideoEntry($entry) {
$obj= new stdClass;
// get nodes in media: namespace for media information
$media = $entry->children('http://search.yahoo.com/mrss/');
$obj->title = $media->group->title;
$obj->description = $media->group->description;
// get <yt:duration> node for video length
$yt = $media->children('http://gdata.youtube.com/schemas/2007');
$attrs = $yt->duration->attributes();
$obj->length = $attrs['seconds'];
// return object to caller
return $obj;
}
// get video ID from $_GET
if (!isset($v)) {
die ('ERROR: Missing video ID');
} else {
$vid = $v;
}
// set video data feed URL
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $v;
// read feed into SimpleXML object
$entry = simplexml_load_file($feedURL);
// parse video entry
$video = parseVideoEntry($entry);
// display video image, title and duration
echo "<img src='http://i3.ytimg.com/vi/$v/default.jpg' width='150' />";
echo "<p>{$video->title}</p>";
echo "<p>".sprintf("%0.2f", $video->length/60) . " min. </p>";
}
?>
答案 3 :(得分:0)
视频的网址将包含视频ID。使用YouTube's API请求视频信息时,您可以使用此ID。在您收到的视频Feed回复中,应该有<yt:duration>
标记,您可以使用该标记来获取视频的持续时间。只需稍微了解一下API,您就应该能够找到所需的内容。