我正在使用YouTube iFrame API嵌入视频并创建一个简单的自定义播放器。
我正在寻找视频标题/描述/等。从API无需另外打电话给YouTube获取信息。我无法找到任何相关信息 - 任何想法,或者我是否因为获取视频信息而无法拨打电话?我想也许这些信息可以在player
返回的YT.Player()
对象中找到。
谢谢!
答案 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);
}
}
};