2010-03-31 55 views
55

我可以使用<video><audio>標籤播放播放列表並控制它們嗎?HTML 5視頻或音頻播放列表

我的目標是知道什麼時候視頻/歌曲已經播放完畢,然後進行下一步並更改音量。

+26

+1對新技術的興趣不使用閃光燈 – markcial 2010-03-31 10:53:10

回答

52

,你可以在這樣的

<script type="text/javascript"> 
var nextVideo = "path/of/next/video.mp4"; 
var videoPlayer = document.getElementById('videoPlayer'); 
videoPlayer.onended = function(){ 
    videoPlayer.src = nextVideo; 
} 
</script> 
<video id="videoPlayer" src="path/of/current/video.mp4" autoplay autobuffer controls /> 

更多信息onend事件here

+0

這將不只是玩2個文件,怎麼說打10個的音頻文件 – defau1t 2012-04-23 12:29:17

+1

我認爲,所有你需要做的就是創建一個創建一個var i = 1,最初將nextVideo設置爲myArray [0],然後在videoPlayer.src = nextVideo下創建一個var i = 1的URL(我們稱之爲myArray)把nextVideo = myArray [i];我++;這樣,每當當前視頻結束時,下一個視頻就會加載,下一個網址將準備就緒。 PS。對於完全缺乏格式化的問題,我在工作中,只是想回答這個問題 – DanTheMan 2014-04-22 21:21:39

+2

對於那些希望在第二個完成後回到第一個視頻的人來說,這是一個非常簡單的適應以上答案: 小提琴:http://jsfiddle.net/P38aV/ – cameronjonesweb 2014-06-04 04:38:54

1

沒有辦法使用<video><audio>標籤來定義播放列表,但有一些方法可以控制它們,因此您可以使用JavaScript來模擬播放列表。查看HTML5 spec的4.8.7,4.8.9(特別是4.8.9.12)。希望大多數方法和事件都是在現代瀏覽器上實現的,例如Chrome和Firefox(當然是最新版本)。

1

是的,你可以在你的src標籤簡單地指向一個.m3u播放列表文件。一個m3u格式的文件很容易構造 -

#hosted mp3's need absolute paths but file system links can use relative paths 
http://servername.com/path/to/mp3.mp3 
http://servername.com/path/to/anothermp3.mp3 
/path/to/local-mp3.mp3 

----- ----- UPDATE

哦,原來播放列表的m3u文件支持iPhone,但沒有其他很多,包括Safari 5,這是有點傷心。我不確定Android手機,但我懷疑他們是否支持它,因爲Chrome不支持。對錯誤信息抱歉。

+3

這實際上並非如此。 HTML5規範不支持m3u播放列表文件,但有一個jquery插件http://plugins.jquery.com/plugin-tags/m3u增加了支持。 – huntaub 2010-11-27 19:30:17

+0

這是真的......;) – 2010-12-11 21:15:39

3

jPlayer是一個自由和開放源碼的HTML5音頻和視頻庫,可能對你有用。它有內置的播放列表支持: http://jplayer.org/

11

我創建了一個JS搗鼓這個位置:

http://jsfiddle.net/Barzi/Jzs6B/9/

首先,你的HTML標記看起來是這樣的:

<video id="videoarea" controls="controls" poster="" src=""></video> 

<ul id="playlist"> 
    <li movieurl="VideoURL1.webm" moviesposter="VideoPoster1.jpg">First video</li> 
    <li movieurl="VideoURL2.webm">Second video</li> 
    ... 
    ... 
</ul> 

其次,通過JQuery庫的JavaScript代碼如下所示:

$(function() { 
    $("#playlist li").on("click", function() { 
     $("#videoarea").attr({ 
      "src": $(this).attr("movieurl"), 
      "poster": "", 
      "autoplay": "autoplay" 
     }) 
    }) 
    $("#videoarea").attr({ 
     "src": $("#playlist li").eq(0).attr("movieurl"), 
     "poster": $("#playlist li").eq(0).attr("moviesposter") 
    }) 
})​ 

最後但並非最不重要的,你的CSS:

#playlist { 
    display:table; 
} 
#playlist li{ 
    cursor:pointer; 
    padding:8px; 
} 
#playlist li:hover{ 
    color:blue;       
} 
#videoarea { 
    float:left; 
    width:640px; 
    height:480px; 
    margin:10px;  
    border:1px solid silver; 
}​ 
0

我並不滿足於被提供了,所以這裏是我的建議,使用jQuery:

  <div id="playlist"> 
       <audio id="player" controls preload="metadata" volume="1"> 
        <source src="" type="audio/mpeg"> 
        Sorry, this browser doesn't support HTML 5.0 
       </audio> 
       <ul></ul> 
      </div> 

      <script> 
       var folder = "audio"; 
       var playlist = [ 
        "example1.mp3", 
        "example2.mp3" 
       ]; 
       for (var i in playlist) { 
        jQuery('#playlist ul').append('<li>'+playlist[i]+'</li>'); 
       } 

       var player = document.getElementById('player'); 
       var playing = playlist[0]; 
       player.src = folder + '/' + playing; 

       function display(id) { 
        var list = jQuery('#playlist ul').children(); 
        list.removeClass('playing'); 
        jQuery(list[id]).addClass('playing'); 
       } 

       display(0); 

       player.onended = function(){ 
        var ind_next = playlist.indexOf(playing) + 1; 

        if (ind_next !== 0) { 
         player.src = folder + '/' + playlist[ind_next]; 
         playing = player.src; 
         display(ind_next) 
         player.play(); 
        } 
       } 
      </script> 

您只需編輯playlist array,你就完成了

1

我從cameronjonesweb稍微優化了JavaScript代碼。現在,您可以將剪輯添加到數組中。其他一切都是自動完成的。

var nextVideo = ["http://www.w3schools.com/html/movie.mp4","http://www.w3schools.com/html/mov_bbb.mp4","http://www.w3schools.com/html/movie.mp4"]; 
 
var curVideo = 0; 
 
var videoPlayer = document.getElementById('videoPlayer'); 
 
videoPlayer.onended = function(){ 
 
\t \t ++curVideo; 
 
    if(curVideo < nextVideo.length){  \t \t 
 
     videoPlayer.src = nextVideo[curVideo];   
 
    } 
 
}
<video width="320" height="240" autoplay controls id="videoPlayer"> 
 
    <source src="http://www.w3schools.com/html/movie.mp4" type="video/mp4"> 
 
    Your browser does not support the video tag. 
 
</video>