Я сделал небольшой плеер на js (5-6 треков). Для воспроизведения музыки использовал не музыку из локального компьютера а прямую ссылку на неё, и картинки так же отображаются с помощью пряомой ссылки. Поэтому вы для удобства можете посмотреть код например в CodePen, и всё будет так как у меня работать. Вот мой код: Вот ссылка кода на codeoPen кому удобней: CodePen
let audio = document.getElementById("audio");
let progress = document.getElementById("progress");
let playImage = document.getElementsByClassName("playImage")[0];
audio.ontimeupdate = progressUpdate;
//ontimeupdate - Когда текущая позиция воспроизведения изменилась.
progress.onclick = audioRewind;
let headerImage = document.getElementsByClassName("headerImage")[0];
var musicSrc = ["https://cs6-6v4.vkuseraudio.net/p6/38be310ad2c4d6.mp3?extra=J0x0WHcYhNYT92u_iZLzElrvKe2RsF4oDSwNpp_cqOKHFwifkiKbQX4rXadE0HqRk8KX3_jyZUciHrEmmAHFnKAwZlrbooH7-4yy88Dh5OG01s3o2Wmw8H8iuDNmbhqWUg-sZNTzKNPn83o2QJTetK_S2g",
"https://psv4.vkuseraudio.net/c613320/u56185402/audios/a70900b86e33.mp3?extra=TIEH2yIYtBmjvB4tgwiOaj68Kweawv0KkzQ-Y0g_ZCfEIRAOEB3A7QLPxNrmCSNFSNYDPqPTl-d5Oe6Rtjq9OhpEzD50ntM6GpVsFRCYupjqQ3rWUy4Scspi72Ezj2H1ZD03v7PY1FdpC4PLSqK0cV_9tQ",
"https://cs6-8v4.vkuseraudio.net/p4/a7d25cb45678f4.mp3?extra=B_0bDTQ7GpMDpQrAfMLBjn8FzaQc0HmJ-Kv-Mdzyiz1g2FNIwqCbTVA82oeCYI35zKNnLtOcLUtSPIuZtVuVI3OV6syHaL5cpFoOQdAvRoyQqvMSIpCxOHia20D0RWSc-M2EusfGLAYeihMu0RUYILtuTw",
"https://musicd.mycdn.me/v0/stream?id=v0_10058962922_1_1&cid=v0_10058962922_1_1&fid=122898822407282&uid=25a91d9ecc279c38a006c6e8960c01eb&sid=2e0e54c417a2455515cac2f374faa2f00d301b5d50702693900fbbbf2cc0dceddb320db6b89dc470fc498cea4001afa4f7bc60e09512e1723820b858e2b2649a&ts=1575389249780&md5=e7c92837f32a965c484f8475817f62f9&clientHash=1419615615215421021815614613414334128224138742381273901616122922622611815419637422440413626",
"https://musicd.mycdn.me/v0/stream?id=v0_10009217877_1_1&cid=v0_10009217877_1_1&fid=7430151083073&uid=25a91d9ecc279c38a006c6e8960c01eb&sid=2e0e54c417a2455515cac2f374faa2f00d301b5d50702693900fbbbf2cc0dceddb320db6b89dc470fc498cea4001afa4f7bc60e09512e1723820b858e2b2649a&ts=1575391654925&md5=470fa0e56eac2553aadd108b6c750b5e&clientHash=221221319221221189189951495412959165598191172121495914928322274221221149499221221169189",
"https://musicd.mycdn.me/v0/stream?id=v0_10046395798_1_1&cid=v0_10046395798_1_1&fid=123247068672503&uid=25a91d9ecc279c38a006c6e8960c01eb&sid=2e0e54c417a2455515cac2f374faa2f00d301b5d50702693900fbbbf2cc0dceddb320db6b89dc470fc498cea4001afa4f7bc60e09512e1723820b858e2b2649a&ts=1575392411173&md5=0856c0d6992c7b6acaae9beb638e45f9&clientHash=273260338239229219481156231312291179361432152472472471371713752311628428593233135257163241175"
]; //Прямые ссылки на музыку
let musicImages = ["https://i1.sndcdn.com/artworks-000140977662-ytk0y6-t500x500.jpg",
"https://images-na.ssl-images-amazon.com/images/I/4105aA6-6DL._SX355_.jpg",
"https://i1.imgiz.com/rshots/9484/brns-american-money-virtu-remix_9484768-7491_1800x945.jpg",
"https://images-na.ssl-images-amazon.com/images/I/31kljt9YEbL._SL500_AC_SS350_.jpg",
"https://www.cosmo.com.ua/upload/image/%D1%84%D0%BE%D1%82%D0%BE%20%D1%8F%D1%80%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%20%D0%B1%D1%83%D0%B3%D0%B0%D0%B5%D0%B2_4_(1).jpg",
"https://i.pinimg.com/736x/46/ab/b5/46abb5dafce40cfea46da1b297a11a77.jpg"
];//Прямые ссылки на картинки для трека
var number = 0;
function play(){
audio.play();
if(playImage.src == "https://image.flaticon.com/icons/svg/149/149114.svg"){//ссылка на иконку play
playImage.src = "https://image.flaticon.com/icons/svg/149/149116.svg";//ссылка на иконку pause
audio.play();
}
else{
playImage.src = "https://image.flaticon.com/icons/svg/149/149114.svg";//ссылка на иконку play
audio.pause();
}
}
function speedUp(){
number++;
if(number >= musicSrc.length){
number = 0;
}
audio.src = musicSrc[number];
headerImage.src = musicImages[number];
audio.play();
playImage.src = "https://image.flaticon.com/icons/svg/149/149116.svg";//иконка pause
}
function speedDown(){
number--;
if(number < 0){
number = musicSrc.length-1;
}
audio.src = musicSrc[number];
headerImage.src = musicImages[number];
audio.play();
playImage.src = "https://image.flaticon.com/icons/svg/149/149116.svg";//иконка pause
}
function speedNormal(){
audio.play();
audio.playbackRate = 1;
}
function progressUpdate(){
let d = audio.duration;//Получить длину аудио
let c = audio.currentTime;// устанавливает или возвращает текущую позицию времени воспроизведения медиа файла
if(c > 0){
progress.value = (100 * c) / d;
}
}
function audioRewind(){
let c = audio.currentTime;
if(c > 0){
let w = this.offsetWidth;
let o = event.offsetX;
this.value = 100 * o/w;
audio.pause();
audio.currentTime = audio.duration * (o/w);
playImage.src == "https://image.flaticon.com/icons/svg/149/149114.svg"/*ссылка на иконку play*/ ? audio.pause() : audio.play();
}
}
audio.onended = function() {
number++;
audio.src = musicSrc[number];
headerImage.src = musicImages[number];
audio.play();
playImage.src = "https://image.flaticon.com/icons/svg/149/149116.svg";//ссылка на иконку Pause
}
<span class="nameOfSong">Never Look Back</span><br/><span class="author">Boris Brejcha</span>
<audio src="https://cs6-6v4.vkuseraudio.net/p6/38be310ad2c4d6.mp3?extra=J0x0WHcYhNYT92u_iZLzElrvKe2RsF4oDSwNpp_cqOKHFwifkiKbQX4rXadE0HqRk8KX3_jyZUciHrEmmAHFnKAwZlrbooH7-4yy88Dh5OG01s3o2Wmw8H8iuDNmbhqWUg-sZNTzKNPn83o2QJTetK_S2g" id="audio"></audio>
<progress id="progress" max="100" value="0" onclick="ff1()" style="width: 100%; margin: 0 auto;"></progress>
<button id="speed-down" onclick="speedDown()"><img src="https://image.flaticon.com/icons/svg/149/149118.svg" alt="" width="25px"/></button>
<button id="play" onclick="play()"><img src="https://image.flaticon.com/icons/svg/149/149114.svg" alt="" width="25px" class="playImage"/></button>
<button id="speed-up" onclick="speedUp()"><img src="https://image.flaticon.com/icons/svg/149/149117.svg" alt="" width="25px"/></button>
Когда я переключаю песни быстро, то выходит следующая ошибка: Uncaught(in promise) AbortError: The play() request was interrupted by e new load request.
Не понимаю почему, я пытался найти её в гугле но ничего из вариантов не помогло. Когда очередь доходит до последнего трека и он заканчивается (не переключаю последний трек а именно когда он сам заканчивается), то выходит ошибка Uncaught (in promise) NotSupportedError: Failed to load because no supported source was found А в месте сэтим следующая картинка не показывается и трек следующий не играет.
Приходится нажать на кнопку переключить, и тогда воспроизводиться следующий трек. Я не понимаю в чём дело, искал ошибки в гугле, но не помогло, целый день сижу и ломаю голову, если кто поможет это исправить, буду неимоверно благодарен ! Спасибо.
Окончание последнего трека вызывает ошибку из-за того, что в функцию audio.onended() забыли включить такую же проверку, не закончились ли треки, как и в speedUp() и speedDown(). Такой эта функция должна быть после исправления:
audio.onended = function() {
number++;
if(number >= musicSrc.length){
number = 0;
}
audio.src = musicSrc[number];
headerImage.src = musicImages[number];
audio.play();
playImage.src = "https://image.flaticon.com/icons/svg/149/149116.svg";//ссылка на иконку Pause
}
А ошибка при быстром переключении появляется скорее всего из-за того, что аудиоданные следующего файла не успевают подгружаться.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть стандартная задача по нахождению суммы элементов главной диагоналиРешаю таким образом:
Подскажите с решением задачиЕсть столбцы с городами в алфавитном порядке - скрин шаблона При изменении разрешения, правый блок переносится...