Аудио HTML5 Autoplay WebWorks - PullRequest
       3

Аудио HTML5 Autoplay WebWorks

2 голосов
/ 20 января 2012

Как заставить тег HTML5 Audio работать в приложении для веб-работ с опцией автозапуска?

Ex: При загрузке документа src элемента Audio изменяется с помощью javascript, а затем audioElement.play () - это не работает, вам нужно привязать щелчок другой ссылки или кнопки к audioElement.play () и нажать AGAIN ...

Есть идеи?

function playSongNow(currentID) {
    var audioElement = document.createElement('audio');
    audioElement.setAttribute('autoplay', 'true');
    audioElement.setAttribute('preload', 'true');
    audioElement.setAttribute('src', 'http://' + sessionStorage.url + ':' + sessionStorage.port + '/rest/stream.view?u=' + sessionStorage.user + '&p=' + sessionStorage.pass + '&v=1.6.0&c=BerrySonic&id=' + currentID);
    audioElement.load();
    audioElement.addEventListener("load", function() {
        audioElement.play();
        $(".duration span").html(audioElement.duration);
        $(".filename span").html(audioElement.src);
    }, true);
    $('.play').click(function() {
        audioElement.play();
    });
    $('.pause').click(function() {
        audioElement.pause();
    });
    $('.volumeMax').click(function() {
        audioElement.volume=1;
    });
    $('.volumestop').click(function() {
        audioElement.volume=0;
    });
    $('.stop').click(function() {
        audioElement.pause();
        audioElement.currentTime = 0;
    });
    $('.playatTime').click(function() {
        audioElement.currentTime= 35; //Testing skipping so used 35
        audioElement.play();
    });
}

playSongNow вызывается HTML:

<a onclick="playSongNow('2f6d656469612f52616964426f782f4d757369632f4164656c652f32312f4164656c65202d2052756d6f7572204861732049742e6d7033');"><li>Rumour Has It</li></a>

NEW: На самом деле я думаю, что сузил проблему до:

audioElement.addEventListener("load", function() {
    audioElement.play();
    $(".duration span").html(audioElement.duration);
    $(".filename span").html(audioElement.src);
}, true);

Я пытался использовать "canplaythrough" Но ни один из них не помогает определить, когда было передано достаточно данных для воспроизведения, потому что если вы это сделаете:

audioElement.load();
audioElement.play();

Я попробовал следующее событие:

audioElement.addEventListener('canplay', function() {
    alert('canplay');
    audioElement.play();
});

И это работает, но это не значит, что звук может воспроизводиться без буферизации, не так ли? Он также немедленно запускает событие «canplaythrough».

Некоторое руководство по этим событиям было бы полезно.

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

canplaythrough не запускает ежевику, но canplay делает .... не спрашивайте меня, почему ....

0 голосов
/ 23 января 2012

Вы можете справиться с этим с помощью события ended, например:

audioElement.addEventListener('ended', function(){
playSongNow(......)
}, false);
...