从iFrame嵌入API获取YouTube视频信息

时间:2013-03-14 17:55:25

标签: iframe youtube youtube-api

我正在使用YouTube iFrame API嵌入视频并创建一个简单的自定义播放器。

我正在寻找视频标题/描述/等。从API无需另外打电话给YouTube获取信息。我无法找到任何相关信息 - 任何想法,或者我是否因为获取视频信息而无法拨打电话?我想也许这些信息可以在player返回的YT.Player()对象中找到。

谢谢!

5 个答案:

答案 0 :(得分:5)

目前,假设您的播放器对象已准备就绪,视频数据可通过player.getVideoData()获取,该视频数据从YT.Player返回视频数据对象:

var videoData = player.getVideoData();
var title = videoData['title'];
var video_id = videoData['video_id'];
var author = videoData['author'];

注意,视频数据对象中的标题只是一个简短的标题,我可以看到48个字符。目前没有长标题和任何描述。

答案 1 :(得分:2)

我已经完成了它..如果它是正确的那么标记为正确:)

<script type="text/javascript">
var playListURL = 'http://gdata.youtube.com/feeds/users/AbrahamLingo/uploads?alt=json&callback=?';

var videoURL= 'http://www.youtube.com/watch?v=';
$.getJSON(playListURL, function(data) {
var list_data="";
$.each(data.feed.entry, function(i, item) {
var feedTitle = item.title.$t;
var feedURL = item.link[1].href;
var fragments = feedURL.split("/");
var videoID = fragments[fragments.length - 2];
var url = videoURL + videoID;
var thumb = "http://img.youtube.com/vi/"+ videoID +"/hqdefault.jpg";
 alert(feedTitle);
});
});

</script>

演示链接: - http://jsfiddle.net/7gq6Y/

答案 2 :(得分:0)

似乎这是不可能的。我花了很多时间手动查看播放器对象,找不到与标题或描述有关的任何内容。

答案 3 :(得分:0)

是的,JacobFennell的回答是正确的,是从玩家对象获取数据的最佳方式。请确保在onPlayerReady事件中处理此问题,否则您将获得一个未定义的对象:

function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId: 'M7lc1UVf-VE',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });

    console.log(player);
  }

  // 4. The API will call this function when the video player is ready.
  function onPlayerReady(event) {
    player.getVideoData(); //here you go
    event.target.playVideo();
  }

答案 4 :(得分:0)

据我所知,Iframe API的getVideoData()总是回拨https://www.youtube.com/get_video_info

Nit:我建议不要超越onPlayer*函数来调用getVideoData(),使其脱离event对象而不是player对象。

在任何一种情况下,函数返回和对象如下:

Object { video_id: "XXX", author: "AUTHOR", title: "TITLE" }

以下是使用视频ID设置Google Analytics事件的示例:

var onPlayerStateChange = function(event) {

    // get video Id from event, not player.
    videoId = typeof event.target.getVideoData().video_id !== 'undefined' ? event.target.getVideoData().video_id : 'unknown';

    // track when user clicks Play
    if (event.data == YT.PlayerState.PLAYING) {

        if (window.ga && ga.loaded) {

            ga('send', 'event', 'Video', 'play', videoId);
        }
    }

    // track when user clicks Pause
    if (event.data == YT.PlayerState.PAUSED) {

        if (window.ga && ga.loaded) {

            ga('send', 'event', 'Video', 'pause', videoId);
        }
    }

    // track when video ends
    if (event.data == YT.PlayerState.ENDED) {

        if (window.ga && ga.loaded) {

            ga('send', 'event', 'Video', 'ended', videoId);
        }
    }
};