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と、onYouTubePlayerAPIReadyonYouTubeIframeAPIReadyonPlayerReady、も もmutePlayPauseUnmute呼び出されていません。私は何を間違えましたか?https://developers.google.com/youtube/js_api_reference#onYouTubePlayerReadyによると、動作するはずですが、動作しません。

4

1 に答える 1

11

ここで 2 つの異なるプレーヤー API を混同しています。

iframe プレーヤーを使用しますか? その場合は、https ://developers.google.com/youtube/iframe_api_reference をご覧ください。

を定義する代わりにonYouTubePlayerReady、次のメソッドを定義する必要があります: 、プレーヤーを作成し、コールバックonYouTubeIframeAPIReadyを割り当てます。onPlayerReady

onYouTubeIframeAPIReadyが呼び出されるように、iframe プレーヤー API の JavaScript が含まれていることを確認してください。

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);

JavaScriptを使用してiframeを作成するのではなく、iframeを作成しているため、ドキュメントから注目に値します。

タグを記述する場合は、YT.Player オブジェクトを作成するときに、タグの属性として指定される width と height の値、または指定される videoId と player パラメーターの値を指定する必要はありません。ソース URL で。

また、mutePlayPauseUnmute 関数で..

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

player上記の ではなくで実際のメソッドをトリガーする必要がありますplayerid

于 2013-02-21T16:24:15.837 に答える