2010-03-31 14 views
55

Czy mogę użyć znacznika <video> lub <audio> do odtwarzania listy odtwarzania i kontrolowania ich?Lista odtwarzania wideo lub audio HTML 5

Moim celem jest wiedzieć, kiedy film/utwór zakończył się, aby odtworzyć i zrobić następny, i zmienić jego głośność.

+26

+1 za zainteresowanie nowymi technologiami, bez lampy błyskowej – markcial

Odpowiedz

52

można załadować następny klip w onend imprezy jak ta

<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 /> 

Więcej informacji here

+0

nie będzie to po prostu grać 2 pliki, jak o grze powiedzmy 10 plików audio – defau1t

+1

myślę wszystko trzeba było zrobić, to stworzyć tablica adresów URL (nazwijmy to myArray), tworzymy var i = 1, początkowo ustawiamy nextVideo na myArray [0] oraz w wideoPlayer.src = nextVideo; put nextVideo = myArray [i]; i ++; W ten sposób za każdym razem, gdy bieżące wideo się skończy, zostanie załadowany następny film, a następny adres będzie gotowy. PS. przepraszam za całkowity brak formatowania, jestem w pracy i po prostu chciałem szybko odpowiedzieć na to pytanie. – DanTheMan

+2

Dla tych, którzy chcą zapętlić się do pierwszego filmu po tym, jak zakończy się drugi, jest bardzo prosta adaptacja powyższej odpowiedzi: Fiddle: http://jsfiddle.net/P38aV/ – cameronjonesweb

1

Nie można zdefiniować listy odtwarzania przy użyciu tylko znacznika <video> lub <audio>, ale istnieją sposoby ich kontrolowania, aby można było symulować listę odtwarzania przy użyciu JavaScript. Sprawdź sekcje 4.8.7, 4.8.9 (zwłaszcza 4.8.9.12) z HTML5 spec. Mam nadzieję, że większość metod i wydarzeń jest wdrażana w nowoczesnych przeglądarkach takich jak Chrome i Firefox (oczywiście najnowsze wersje).

1

Tak, można po prostu wskazać tag src do plik listy odtwarzania .m3u. Plik m3u jest łatwy do skonstruowania -

#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 

----- AKTUALIZACJA -----

Cóż, okazuje się, odtwarzania plików m3u są obsługiwane na iPhone, ale nie na wiele innych, w tym Safari 5, który jest trochę smutny. Nie mam pewności co do telefonów z Androidem, ale wątpię, by je obsługiwały, ponieważ Chrome tego nie robi. Przepraszam za dezinformację.

+3

To nie jest prawda. Specyfikacje HTML5 nie obsługują plików list odtwarzania m3u, jednak istnieje wtyczka jquery http://plugins.jquery.com/plugin-tags/m3u, która dodaje obsługę. – huntaub

+0

to coś w tym rodzaju ...;) –

3

JPlayer to darmowy i open source HTML5 audio i wideo biblioteki, które mogą okazać się przydatne.Posiada wsparcie dla odtwarzania wbudowany w: http://jplayer.org/

11

stworzyłem skrzypiec JS do tego tutaj:

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

Po pierwsze, znaczników HTML wygląda następująco:

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

drugie, Twój kod JavaScript za pośrednictwem biblioteki JQuery będzie wyglądał następująco:

$(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") 
    }) 
})​ 

I last but not least, Twój 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

I nie był zadowolony z tego, co zaoferowano, więc tutaj jest moja propozycja, przy użyciu 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> 

Trzeba tylko edytować playlist array, i gotowe

1

Zoptymalizowałem kod javascript z cameronjonesweb. Teraz możesz po prostu dodać klipy do tablicy. Cała reszta odbywa się automatycznie.

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>

Powiązane problemy