HTML 5 видео или аудио плейлист
могу ли я использовать <video>
или <audio>
тег для воспроизведения плейлиста и управления им?
моя цель состоит в том, чтобы знать, когда видео/песня закончила играть и взять следующий и изменить его объем.
9 ответов:
вы можете загрузить следующий клип в onend событие, как это
<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 />
дополнительная информация здесь
Я создал 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>
во-вторых, ваш код JavaScript через библиотеку JQuery будет выглядеть так:
$(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; }
вы должны взглянуть на попкорн.JS-javascript фреймворк для взаимодействия с Html5:http://popcornjs.org/documentation
jPlayer-это бесплатная библиотека аудио и видео HTML5 с открытым исходным кодом, которую вы можете найти полезной. Он имеет поддержку плейлистов, встроенных в: http://jplayer.org/
Я немного оптимизировал код javascript от cameronjonesweb. Теперь вы можете просто добавить клипы в массив. Все остальное делается автоматически.
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(){ ++curVideo; if(curVideo < nextVideo.length){ 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>
нет никакого способа, чтобы определить список воспроизведения, используя только
<video>
или<audio>
тег, но есть способы управления ими, так что вы можете имитировать плейлист с помощью JavaScript. Ознакомьтесь с разделами 4.8.7, 4.8.9 (особенно 4.8.9.12)HTML5 spec. Надеюсь, что большинство методов и событий реализованы в современных браузерах, таких как Chrome и Firefox (последние версии, конечно).
Да, вы можете просто указать свой тег src на a .файл 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
-----обновление-----
Ну, получается плейлист m3u files are поддерживается на iPhone, но не на многое другое, включая Safari 5, который является своего рода печальным. Я не уверен насчет телефонов Android, но я сомневаюсь, что они его поддерживают, так как хром не. Извините за дезу.
Это было сделано там:http://www.jezra.net/projects/pageplayer
Я не был удовлетворен тем, что было предложено, поэтому вот мое предложение, используя 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
массив, и вы сделали