4

我想加载一个 YouTube 视频,然后立即静音、播放、暂停和取消静音。在这样做时,我希望向用户展示一个没有大播放按钮的视频,并且底部有控件。为了做到这一点,我有以下代码:

<script type="text/javascript">
function onYouTubePlayerReady(playerid)
{
    mutePlayPauseUnmute(playerid);
}
function onYouTubePlayerAPIReady(playerid)
{
    mutePlayPauseUnmute(playerid);
}
function onYouTubeIframeAPIReady(playerid)
{
    mutePlayPauseUnmute(playerid)
}
function onPlayerReady(playerid)
{
    mutePlayPauseUnmute(playerid)
}

function mutePlayPauseUnmute(playerid)
{
    var player = document.getElementById(playerid);
    player.mute();
    player.playVideo();
    player.pauseVideo();
    player.unMute();
}
</script>
<iframe id="quotedVideo1" type="text/html" width="246" height="160" src="https://www.youtube.com/embed/NWHfY_lvKIQ?modestbranding=1&rel=0&showinfo=0&autohide=1&iv_load_policy=3&theme=light&enablejsapi=1&playerapiid=quotedVideo1" frameborder="0"> <!-- Magic Comment --> </iframe>

然而,经过检查,既没有onYouTubePlayerReady, onYouTubePlayerAPIReady, onYouTubeIframeAPIReady, onPlayerReady, 也没有mutePlayPauseUnmute被调用过。我做错了什么?根据https://developers.google.com/youtube/js_api_reference#onYouTubePlayerReady,它看起来应该可以工作,但事实并非如此。

4

1 回答 1

11

您在这里混淆了两个不同的播放器 API。

你想使用iframe 播放器吗?如果是这样,您需要查看:https ://developers.google.com/youtube/iframe_api_reference 。

onYouTubePlayerReady您需要定义以下方法,而不是定义: onYouTubeIframeAPIReady,创建您的播放器,然后分配一个onPlayerReady回调。

确保包含 iframe 播放器 API 的 JavaScript,以便onYouTubeIframeAPIReady被调用:

var tag = document.createElement('script');
tag.src = o.protocol + "://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

值得注意的是文档,因为您正在编写 iframe 而不是使用 JavaScript 为您执行此操作:

如果确实写了标签,那么在构造 YT.Player 对象时,不需要指定宽度和高度的值,这些值被指定为标签的属性,或者指定的 videoId 和 player 参数在 src URL 中。

此外,在您的 mutePlayPauseUnmute 功能中..

playerid.mute();
playerid.playVideo();
playerid.pauseVideo();
playerid.unMute();

您将要触发实际的方法,player而不是playerid如上所述。

于 2013-02-21T16:24:15.837 回答