4

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

我正在寻找视频标题/描述/等。无需再次调用 YouTube 即可从 API 获取信息。我找不到任何相关信息 - 有什么想法,还是我一直在打额外的电话来获取视频信息?我想也许信息在player返回的对象中可用YT.Player()

谢谢!

4

5 回答 5

6

就目前而言,假设您的播放器对象已准备就绪,则可以使用视频数据,通过player.getVideoData()它从 YT.Player 返回视频数据对象:

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

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

于 2014-04-02T14:32:56.883 回答
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/

于 2013-03-15T05:24:35.740 回答
0

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

于 2013-03-15T13:59:10.487 回答
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();
  }
于 2015-07-24T18:43:26.933 回答
0

据我所知,Iframe APIgetVideoData()总是调用https://www.youtube.com/get_video_info.

Nit:我建议不要通过将其从对象而不是对象中取出来onPlayer*调用函数。getVideoData()eventplayer

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

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);
        }
    }
};
于 2016-02-23T00:07:50.840 回答