2011-07-23 78 views
0

我有一個包含幾個YouTube視頻嵌入代碼的頁面。當用戶在一個視頻上單擊「>播放」時,頁面上的每個其他視頻都需要暫停,否則它們的音頻會重疊剛剛播放的新視頻。如何在不重疊音頻的情況下顯示多個YouTube視頻

什麼是最有效的實現方式?

+0

是簡單的選擇,播放/暫停在API中,但是這是不夠的變型開放討論;這首先是堆棧溢出的一點,不管一些問題可能出現如何隨意。即使YouTube演示頁面也沒有將標準問題作爲標準解決:http://code.google.com/apis/youtube/youtube_player_demo.html –

+0

這是一個類似的查詢http://stackoverflow.com/questions/6671232/youtube-api-stop-video,併爲任何希望在未來能夠在此找到相同問題的人提供快速解決方案。 –

+1

我重讀了我的評論,我很抱歉。它有一種「無意義的」語調,但並不打算。我應該問的是 - 你有一個代碼示例,你想針對一個解決方案?至少有一些顯示你如何嵌入的HTML?更好的辦法是刺激解決方案。此外,您可能希望更有效地瞭解您的意思。 – mjhm

回答

1

好的,這裏是一個解決方案,我想出了一些其他的代碼。

在你的js文件添加以下內容:

var videos = {}; 

$(document).ready(function(){ 
    // assigns ids to all the embed tags 
    var i = 0; 
    $('embed').each(function() { 
    $(this).attr('id', "embed"+i); 
    i++ 
    }); 
}); 

function onYouTubePlayerReady(playerId) { 

    // loop through all embed tags assign a listener object only if not already assigned 
    $('embed').each(function() { 
    var embedid = $(this).attr('id'); 
    var ytplayer = document.getElementById(embedid); 
    if (videos[embedid] == undefined) { 
     window["dynamicYouTubeEventHandler" + embedid] = function(state) { onytplayerStateChange(state, embedid); } 
     ytplayer.addEventListener("onStateChange", "dynamicYouTubeEventHandler"+embedid); 
    } 
    videos[embedid] = true; 
    }); 
} 

function onytplayerStateChange(newState, playerId) { 
    // If one of the videos was played 
    if (newState == 1) { 
     // loop through each of the embed tags 
     $('embed').each(function() { 
      var embedid = $(this).attr('id'); 
      var ytplayer = document.getElementById(embedid); 
      // Only pause video if not the current player 
      if(embedid != playerId) { 
       var current_state = ytplayer.getPlayerState(); 
       // Only pause if not already started 
       if (current_state != '-1') { ytplayer.pauseVideo(); } 
      } 
     }); 
    } 
} 

然後在你的HTML文件,嵌入的YouTube像這樣。請確保您有enablejsapi = 1是在URL的末至YouTube的文件:

<object width="500" height="400"> 
    <param name="movie" value="http://www.youtube.com/v/ms6GAdy6dag?version=3&amp;enablejsapi=1"> 
    <param name="allowFullScreen" value="true"> 
    <param name="allowscriptaccess" value="always"> 
    <param name="wmode" value="transparent"> 
    <embed src="http://www.youtube.com/v/ms6GAdy6dag?version=3&amp;enablejsapi=1" type="application/x-shockwave-flash" width="500" height="400" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"> 
</object> 


<object width="500" height="400"><param name="movie" value="http://www.youtube.com/v/PegET_3FFAs?version=3&amp;enablejsapi=1"> 
    <param name="allowFullScreen" value="true"> 
    <param name="allowscriptaccess" value="always"> 
    <param name="wmode" value="transparent"> 
    <embed src="http://www.youtube.com/v/PegET_3FFAs?version=3&amp;enablejsapi=1" type="application/x-shockwave-flash" width="500" height="400" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"> 
</object> 
相關問題