获取youtube视频文件的时间长度

时间:2011-10-14 19:46:43

标签: php javascript youtube youtube-api

我遇到了问题。如何获取YouTube视频的持续时间? 这是场景。

  

我在这个字段中有一个输入字段说我现在输入你想要的youtube url   验证视频应该只有1分钟,如果是,那么我   将其存储在数据库中,否则我会显示错误消息。

可以做这件事吗?

4 个答案:

答案 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,您就应该能够找到所需的内容。