Получение продолжительности видеофайла YouTube - PullRequest
4 голосов
/ 14 октября 2011

У меня проблема.как получить продолжительность видео на YouTube?Вот сценарий.

У меня есть поле ввода в этом поле, скажем, я ввожу URL-адрес youtube, сейчас я хочу поставить подтверждение, что видео должно быть только 1 мин, если да, то я сохраняю это вбазы данных, иначе я показываю сообщение об ошибке.

возможно ли это сделать?

Ответы [ 4 ]

5 голосов
/ 15 октября 2011

Вы можете использовать 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'/>

4 голосов
/ 14 октября 2011

За свои документы, In a video feed entry, the <yt:duration> tag specifies a video's length.

1 голос
/ 10 января 2013

Приведенный ниже код предоставит вам миниатюру, название и продолжительность видео ОТ URL.Просто измените ссылку на YouTube с конца.

Демонстрация: http://100ro.ro/wp-includes/ajaxdemo/test.php?y=www.youtube.com/watch?v=V80jm1rs2UQ:

( примечание: используйте URL-адрес YouTube в y = youtubeurl без http://)

<?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>";


        } 

        ?>
0 голосов
/ 14 октября 2011

URL видео будет содержать идентификатор видео.Вы можете использовать этот идентификатор при запросе видеоинформации с помощью API YouTube .В ответе на фид видео, который вы получите, должен быть тег <yt:duration>, который вы можете использовать для определения продолжительности видео.Просто потратьте немного времени на просмотр API, и вы сможете найти то, что вам нужно.

...