HTML 5 видео или аудио плейлист - PullRequest
63 голосов
/ 31 марта 2010

Могу ли я использовать тег <video> или <audio> для воспроизведения списка воспроизведения и управления им?

Моя цель - узнать, когда закончилось воспроизведение видео / песни, и взять следующий иизменить его громкость.

Ответы [ 9 ]

63 голосов
/ 31 марта 2010

вы можете загрузить следующий клип в одно событие, как это

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

Подробнее здесь

11 голосов
/ 18 октября 2012

Я создал скрипку 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;
}​
4 голосов
/ 29 ноября 2016

Я немного оптимизировал код javascript от cameronjonesweb. Теперь вы можете просто добавить клипы в массив. Все остальное делается автоматически.

<video autoplay controls id="Player" src="http://www.w3schools.com/html/movie.mp4" onclick="this.paused ? this.play() : this.pause();">Your browser does not support the video tag.</video>

<script>
var nextsrc = ["http://www.w3schools.com/html/movie.mp4","http://www.w3schools.com/html/mov_bbb.mp4"];
var elm = 0; var Player = document.getElementById('Player');
Player.onended = function(){
    if(++elm < nextsrc.length){         
         Player.src = nextsrc[elm]; Player.play();
    } 
}
</script>
3 голосов
/ 02 июня 2012

jPlayer - это бесплатная библиотека аудио и видео HTML5 с открытым исходным кодом, которая может оказаться вам полезной. Он имеет встроенную поддержку плейлистов: http://jplayer.org/

3 голосов
/ 02 мая 2011

Вам следует взглянуть на Popcorn.js - инфраструктуру javascript для взаимодействия с Html5: http://popcornjs.org/documentation

1 голос
/ 11 июля 2010

Да, вы можете просто указать свой тег 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

----- ОБНОВЛЕНИЕ -----

Что ж, получается, что файлы плейлиста m3u поддерживаются на iPhone , но не во многих других, включая Safari 5, что довольно печально. Я не уверен насчет телефонов Android, но сомневаюсь, что они поддерживают его, так как Chrome нет. Извините за дезинформацию.

1 голос
/ 31 марта 2010

Нет способа определить список воспроизведения, используя только тег <video> или <audio>, но есть способы управления ими, поэтому вы можете смоделировать список воспроизведения с помощью JavaScript. Ознакомьтесь с разделами 4.8.7, 4.8.9 (особенно 4.8.9.12) спецификации HTML5 . Надеемся, что большинство методов и событий реализованы в современных браузерах, таких как Chrome и Firefox (конечно, в последних версиях).

0 голосов
/ 04 августа 2016

Я не был удовлетворен тем, что было предложено, поэтому вот мое предложение с использованием 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, и все готово

0 голосов
/ 28 июня 2010

Это было сделано там: http://www.jezra.net/projects/pageplayer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...