<audio id="my" autoplay="" controls="" src="https://fotodushi.ru/mus/engsong8090/11_Chris_Rea-And_you_my_love.mp3"></audio>
<script>
document.getElementById('my').addEventListener("timeupdate", function() {
if(this.currentTime > this.duration * .3) this.pause()
}, true);
</script>
|
Почему то не срабатывает.
Забыл добавить, что все это должно выполняться в цикле с рандомными промежутками. Вот мой код:
<script>
function mp3play(){
var rnd_num = Math.floor(Math.random() * 1200) + 1; // max delay in seconds
var audio = new Audio();
audio.volume = 1;
audio.src = "/mp3/" + (Math.floor(Math.random() * 40) + 1) + ".mp3"; // count of files in folder
audio.onloadeddata = function(){
audio.currentTime = Math.random() * audio.duration;
audio.play();
setTimeout(function(){audio.pause()}, 3 + Math.random() * 2);
}
setTimeout(mp3play,rnd_num * 1000);
}
mp3play();
</script>
Что здесь не так? |
VeliaR,
если ошибок нет, файлы просто неуспевают прогрузится, возможно rnd_num маловато, и смотрите консоль. |
А в консоли не появляется ошибка, что файл не найден? Если да, то попробуйте в 6 строке убрать первый слеш, оставить audio.src = "mp3/"...
Ещё у Вас типичная ошибка - запуск плеера вез взаимодействя с посетителем сайта. Для этого я и был всавил button. |
VeliaR,
по идее последующий запуск таймера нужно производить после проигрывания фрагмента, и это единственный таймер нужный. |
VeliaR,
может поменять строки 6 и 7 местами? |
Но тогда получится, что загрузка данных будет из неизвестного файла, так как src ещё будет неопределено.
|
Цитата:
|
<audio id="my" controls=""></audio>
<script>
var host = 'https://fotodushi.ru/mus/',
mp3 = [
'muzdushi/01La_Belle_Mixtape-Summer_Memories_O_Henri_Pfr.mp3',
'muzdushi/02Oliver_Shanti-Sacral_Nirvana.mp3',
'muzdushi/03Eroticheskiy_saksofon-Melodiya_lubvi.mp3',
'muzdushi2/15Anugama-Rhythm_Of_Love.mp3',
'muzdushi2/16Rondo_Veneziano-Musica_Fantasia.mp3',
'muzzhizni/15-Tango_Orchester_Alfred_Hause-La_Cumparsita.mp3',
'classic/01-Mihail_Oginskiy-Polonez.mp3',
'muzlove/01-Mehdi-Guiding_Light.mp3',
'muzlove/15-Elman_Namazoglu-Mehebbetim.mp3',
'engsong8090/11_Chris_Rea-And_you_my_love.mp3',
'krugosvet/01_Petr_Chaykovskiy-Chanson_triste.mp3',
'france/09_Barimar-A_Paris.mp3',
'france/16_Salvatore_Adamo-Tombe_la_neige.mp3',
'italia/01_Biagio_Antonacci-Pazzo_Di_Lei.mp3',
'russia/19_Aleksey_Arhipovskiy-Zolushka.mp3',
'enigma/03_Enigma-Mea_Culpa_Part_II_(Fading_Shades_Mix).mp3'
], mp = document.getElementById('my');
function timer() {
var wait = 1000 + Math.floor(Math.random() * 500),
tm = 10 + Math.random() * 20,
src = host + mp3[mp3.length * Math.random()|0];
setTimeout(function(){
mp.src = src;
mp.oncanplay = function() {
this.play()
}
mp.ontimeupdate = function() {
if(this.currentTime > tm) {
this.pause();
timer();
}
}
}, wait);
}
timer();
</script>
PS. Math.random(), это псевдослучайность, а не случайность, значит будут повторы. По уму нужно удалять из массива уже проигранные. |
В консоли след. ошибка: Uncaught (in promise) DOMException
Что это может значить и как исправить? |
| Часовой пояс GMT +3, время: 09:02. |