web-dev-qa-db-ja.com

Youtubeビデオ(IFrame API)ミュートを自動的に再生するにはどうすればよいですか?

<iframe class="youtube-player" type="text/html" src="http://www.youtube.com/embed/JW5meKfy3fY?wmode=opaque&autohide=1&autoplay=1&volume=0&vol=0&mute=1" frameborder="0">&lt;br /&gt;</iframe>

ビデオはミュートされていません!最初に再生するときに音量を0にしたい...

35
TIMEX

Youtubeはurlパラメーターによるミュートを提供しません( http://code.google.com/apis/youtube/player_parameters.html を参照)。

そのためにはJavaScriptを使用する必要があります。詳細については http://code.google.com/apis/youtube/js_api_reference.html をご覧ください。

ただし、上記のリンクにあるページの警告に注意してください。「YouTube JavaScript Player APIの廃止は2015年1月27日に発表されました。YouTubeFlash埋め込みも廃止されました。詳細については廃止ポリシーをご覧ください。 IFrame APIは、クライアントがサポートする埋め込みプレーヤー(HTML()またはFlash())をインテリジェントに使用できます。」

HTML

<iframe class="youtube-player" id="player" type="text/html" src="http://www.youtube.com/embed/JW5meKfy3fY?wmode=opaque&autohide=1&autoplay=1&enablejsapi=1" frameborder="0">&lt;br /&gt;</iframe>

uRLのenablejsapi = 1に注意してください。

Javascript

var player =  iframe.getElementById('player');
player.mute();

更新

以前のコードにはいくつかの問題があり、現在のAPIでは機能しませんでした(playerVars構文が間違っていました)。更新されたコードは次のとおりです。必要なパラメーターを調整する必要がある場合があります。

         
    <div id="player"></div>
    <script>
      // 1. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

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

      // 2. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '100%',
          width: '100%',
          playerVars: {
                    autoplay: 1,
                    loop: 1,
                    controls: 0,
                    showinfo: 0,
                    autohide: 1,
                    modestbranding: 1,
                    vq: 'hd1080'},
          videoId: '1pzWROvY7gY',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 3. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
        player.mute();
      }

      var done = false;
      function onPlayerStateChange(event) {
        
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>
66
Gagandeep Singh

player_api は2015年6月25日に非推奨になります。YouTube動画を再生するための新しいAPIがあります IFRAME_API

次のコードのようになります。

<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>

<script>
  // 2. This code loads the IFrame Player API code asynchronously.
  var tag = document.createElement('script');

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

  // 3. This function creates an <iframe> (and YouTube player)
  //    after the API code downloads.
  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId: 'M7lc1UVf-VE',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
  }

  // 4. The API will call this function when the video player is ready.
  function onPlayerReady(event) {
    event.target.playVideo();
  }

  // 5. The API calls this function when the player's state changes.
  //    The function indicates that when playing a video (state=1),
  //    the player should play for six seconds and then stop.
  var done = false;
  function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING && !done) {
      setTimeout(stopVideo, 6000);
      done = true;
    }
  }
  function stopVideo() {
    player.stopVideo();
  }
</script>
4
JD - DC TECH

これをうまく試してください

<html><body style='margin:0px;padding:0px;'>
        <script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>
                var player;
        function onYouTubeIframeAPIReady()
        {player=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}
        function onPlayerReady(event){player.mute();player.setVolume(0);player.playVideo();}
        </script>
        <iframe id='playerId' type='text/html' width='1280' height='720'
        src='https://www.youtube.com/embed/R52bof3tvZs?enablejsapi=1&rel=0&playsinline=1&autoplay=1&showinfo=0&autohide=1&controls=0&modestbranding=1' frameborder='0'>
        </body></html>
4
Deepak Gupta

ビデオプレーヤーを選択して、そのボリュームを設定できます。

var mp = iframe.getElementById('movie_player');
mp.setVolume(0);

ソース: http://userscripts.org/scripts/review/49366

3
ldiqual
var video1;

function onYouTubeIframeAPIReady(){
        player = new YT.Player("video1", {
                videoId: "id-number",
                width: 300,
                height: 200, 
                playerVars: {
                        "autoplay": 1, // and 0 means off
                        "controls": 1,
                        "showinfo": 0,
                        "modestbranding": 0,
                        "loop": 1,
                        "fs": 0,
                        "cc_load_policy": 0,
                        "iv_load_policy": 3,
                        },
                events: {
                    'onReady': onPlayerReady
                }
        });
  }

function onPlayerReady(event) {
    event.target.mute();
    event.target.setVolume(0); //this can be set from 0 to 100
}

IEおよびSafariでは、音はミュートされません。

0

受け入れられた答えはかなりうまくいきます。もっと制御したかったので、スクリプトにさらにいくつかの機能を追加しました。

function unmuteVideo() {
    player.unMute();
    return false;
  }
  function muteVideo() {
    player.mute();
    return false;
  }
  function setVolumeVideo(volume) {
    player.setVolume(volume);
    return false;
  }

そして、これがHTMLです:

<br>
<button type="button" onclick="unmuteVideo();">Unmute Video</button>
<button type="button" onclick="muteVideo();">Mute Video</button>
<br>
<br>
<button type="button" onclick="setVolumeVideo(100);">Volume 100%</button>
<button type="button" onclick="setVolumeVideo(75);">Volume 75%</button>
<button type="button" onclick="setVolumeVideo(50);">Volume 50%</button>
<button type="button" onclick="setVolumeVideo(25);">Volume 25%</button>

これでサウンドをより細かく制御できます...詳細については、参照URLを確認してください。

YouTube IFrame Player API

0
Tarik