我有一个视频ID。然后我通过 YouTube Player API 的 IFrame API 显示一个视频。视频已显示,现在我需要立即获取此视频的标题。
请注意,当我通过 YouTube Player IFrame API 显示 YouTube 视频时,我需要立即获取视频的标题。
获得视频标题的最快方法是什么?我需要解决方案。
谢谢你。
我有一个视频ID。然后我通过 YouTube Player API 的 IFrame API 显示一个视频。视频已显示,现在我需要立即获取此视频的标题。
请注意,当我通过 YouTube Player IFrame API 显示 YouTube 视频时,我需要立即获取视频的标题。
获得视频标题的最快方法是什么?我需要解决方案。
谢谢你。
确实可以得到Video Title
调用“YouTube Player API 的 IFrame API”时,您可以访问“ event.target.getVideoData().title ”函数:
new YT.Player('player', {
height: '390',
width: '640',
videoId: 'D3pYbbA1kfk',
events: {
'onReady': function onPlayerReady(event) {
alert("The video title is: " + event.target.getVideoData().title);
}
}
});
从 Player IFrame API 看来这是不可能的:
https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/D0w8wA0UV7A
“无法使用 Players API 获取该信息。您需要使用 Data API。”
在 onStateChange 事件中检查未启动和播放状态。我将此用作解决方案,也许不是最好的,但效果很好。
var info = null;
function onStateChange(e)
{
switch(e.data) {
case YT.PlayerState.UNSTARTED:
info = null;
break;
case YT.PlayerState.PLAYING:
if(info == null)
{
info = {title: player.getVideoData().title, duration: player.getDuration()};
// use info here...
}
break;
}
}
斯威夫特 3
你可以使用 YTPlayerState+Extension.swift
extension YTPlayerView {
var videoTitle: String {
let callString = "player.getVideoData().title"
return webView?.stringByEvaluatingJavaScript(from: callString) ?? "no title"
}
}