Начать HTML5 <Audio>в произвольной позиции - PullRequest
3 голосов
/ 23 марта 2012

У меня есть аудиодорожка длиной около 2 часов, которую я хочу использовать на своем сайте. Я хочу, чтобы при загрузке страницы трек воспроизводился с произвольной позиции. Возможно ли это с помощью HTML5? Я знаю, что вы можете использовать функцию element.currentTime (), чтобы получить текущую позицию, но как бы вы получили общее время трека до его полной загрузки? Я пробовал каждую комбинацию .load .preload .autobuffer и еще сотен.

<script>

var stream_url_mp3 = "";
var stream_url_ogg = "";
var stream_total_time = 100;
var stream_start_time = Math.floor(Math.random() * stream_total_time);
var daJukebox = document.createElement('audio');

if (daJukebox.canPlayType) {

    if ("" != daJukebox.canPlayType('audio/mpeg')) {
        daJukebox.src = stream_url_mp3;
    } else if ("" != myAudio.canPlayType('audio/ogg; codecs="vorbis"')) {
        daJukebox.src = stream_url_ogg;
    }

    daJukebox.preload = true;
    daJukebox.autobuffer = true;
    daJukebox.pause();
    daJukebox.currentTime = stream_start_time;
    daJukebox.play();

}

Спасибо:)

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Что возвращает daJukebox.duration? Это должна быть общая длина трека в секундах.

Я провел небольшое исследование, и похоже, что .duration будет работать, только если сервер настроен на правильную настройку заголовков файлов на type = "audio / mp3" name = "filename.mp3" (или ogg) проверьте вкладку сети на консоли разработчика, держу пари, что ваш сервер отправляет файл с типом octet/stream, что приводит к длительности "infinite" в Opera и NaN в других браузерах.

1 голос
/ 23 марта 2012

Если нет способа получить информацию из аудиоэлемента HTML5, вы можете определить продолжительность на сервере и передать информацию в качестве атрибута данных в HTML. Например:

<audio id="some-id" data-duration="7200">

, где 7200 - время в секундах (или в какой-либо другой единице времени). Затем вы можете использовать значение этого атрибута в JavaScript, чтобы решить, с чего начать аудиофайл.

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

Я еще не настроил это, но я нашел эти примеры на http://dev.opera.com/articles/view/html5-audio-radio-player/

// Invoke new Audio object
var audio = new Audio('test.ogg');

// Get the play button and append an audio play method to onclick
var play = document.getElementById('play');
play.addEventListener('click', function(){
    audio.play();
}, false);

// Get the pause button and append an audio pause method to onclick
var pause = document.getElementById('pause');
pause.addEventListener('click', function(){
    audio.pause();
}, false);

// Get the HTML5 range input element and append audio volume adjustment to onchange
var volume = document.getElementById('volume');
volume.addEventListener('change', function(){
    audio.volume = parseFloat(this.value / 10);
}, false);

// Get where one are in playback and push the time to an element
audio.addEventListener("timeupdate", function() {
    var duration = document.getElementById('duration');
    var s = parseInt(audio.currentTime % 60);
    var m = parseInt((audio.currentTime / 60) % 60);
    duration.innerHTML = m + '.' + s + 'sec';
}, false);

Не знаю, насколько это совместимо, но это указывает на то, что вы могли бы что-то сделатькак

var audio = new Audio('test.ogg');
audio.currentTime = "some time format I'm not sure how to format yet";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...