Как проиграть рандомный отрезок аудио?
Нужно выбрать рандомное аудио из папки и затем проиграть рандомный отрезок из этого аудио (допустим, 3-5 секунд).
Каким образом это можно сделать? Заранее спасибо! |
Допустим, в папке 10 аудиофайлов с именнами 1.mp3, 2.mp3 и т. д.
<button onclick="myplay()"> play </button> var audio = new Audio(); function myplay(){ audio.src = Math.ceil(Math.random() * 10) + ".mp3"; audio.onloadeddata = function(){ this.currentTime = Math.random() * this.duration; this.play(); setTimeout(function(){audio.pause()}, 3 + Math.random() * 2); } } |
Опан1,
таймер тут лишний, есть событие timeupdate. |
Как бы там ни было, но если ничего не предпринять, то сразу после объявления src свойство duration не успеет прочитаться из файла и выдаст NaN.
|
Цитата:
|
Не совсем понял, о чём Вы? А перед этим ещё хотел спросить, как тут можно применить timeupdate?
... Да, я не сразу сориентировался, но всё равно, разве удобней будет с помощью timeupdate задать рандомное время 3-5 сек, чем таймером? |
Цитата:
|
Ещё второй вариант я вижу - сравнивать с currentTime, который будет через 3-5 сек, тогда будет без таймера, но чем это лучше, не знаю.
|
Цитата:
|
Тут похоже, что оно выполняетя где-то 4 раза в секунду. Это ещё ничего, я сначала думал, что оно срабатывает чаще - с каждым новым семплом или что-то в этом роде. Вот бы грузило браузер. Фактически currentTime меняется с каждым семплом.
|
Часовой пояс GMT +3, время: 08:16. |