Доброго дня! Уважаемые подскажите пожалуйста как воспроизвести в аудиоплеере m3u8 на DLE 15.0? В общем у меня сайт с радиостанциями и почему то плеер не воспроизводит ссылки на подобие Code: https://hls-01-dfm.hostingradio.ru/dfm/96/playlist.m3u8 Буду благодарен за помощь!
PlayerJS - Build Your Own HTML5 Player например для проигрывания m3u8 плейлистов, ставишь его на сайт и всё будет работать
ABSOLUTE0302 судя по всему, лучше найти человека, кто сделает платно, потому что с вашей стороны конкретики нет: что вы делали и что у вас не получилось, а без этого помочь сложно
Нашел подобный код и очень странно, на одном музыкальном шаблоне работает отлично если его подключить в main.tpl а на другом шаблоне не работает Code: (function () { var HLS_CDN = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js'; var hls = null; function isM3U8(u) { return typeof u === 'string' && /\.m3u8(\?|#|$)/i.test(u); } function ensureHls(cb) { if (window.Hls) { cb(); return; } var s = document.createElement('script'); s.src = HLS_CDN; s.onload = cb; document.head.appendChild(s); } function attachHlsIfNeeded() { var wrap = document.querySelector('.wplayer'); if (!wrap) return; var audio = wrap.querySelector('audio'); if (!audio) return; // исходный src из <source> (до инициализации hls) var srcEl = audio.querySelector('source'); var src = (srcEl && srcEl.getAttribute('src')) || audio.currentSrc || ''; if (!isM3U8(src)) { // если предыдущий трек был HLS — подчистим инстанс if (hls) { try { hls.destroy(); } catch(e){} hls = null; } return; } // Safari / iOS — нативно if (audio.canPlayType('application/vnd.apple.mpegurl') || audio.canPlayType('application/x-mpegURL')) { // гарантированно прописываем m3u8 напрямую audio.src = src; return; } // Chrome/Firefox/Edge — через MSE (hls.js) ensureHls(function () { if (!window.Hls || !window.Hls.isSupported()) return; if (hls) { try { hls.destroy(); } catch(e){} } hls = new window.Hls({ enableWorker: true, lowLatencyMode: true, liveDurationInfinity: true }); hls.attachMedia(audio); hls.on(window.Hls.Events.MEDIA_ATTACHED, function () { hls.loadSource(src); }); // если клик «Слушать» уже произошёл — гарантируем старт после парсинга манифеста hls.on(window.Hls.Events.MANIFEST_PARSED, function () { audio.play().catch(function(){ /* autoplay policies */ }); }); // базовое восстановление при фатальных ошибках сети/медиа hls.on(window.Hls.Events.ERROR, function (event, data) { if (!data || !data.fatal) return; try { switch (data.type) { case window.Hls.ErrorTypes.NETWORK_ERROR: hls.startLoad(); break; case window.Hls.ErrorTypes.MEDIA_ERROR: hls.recoverMediaError(); break; default: hls.destroy(); hls = null; } } catch(e){} }); }); } // Оборачиваем вашу apBuilding, чтобы после построения плеера подвесить HLS function wrapApBuilding() { if (!window.apBuilding || window.apBuilding.__wrapped) return; var orig = window.apBuilding; function patched(a, b, c) { orig(a, b, c); // dom уже отрисован .audioPlayer(), можно цепляться setTimeout(attachHlsIfNeeded, 0); } patched.__wrapped = true; window.apBuilding = patched; } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', wrapApBuilding); } else { wrapApBuilding(); } // Переинициализация при AJAX/SPA событиях (ваши шаблоны их уже триггерят) ['spa:navigate','wajax:after','wajax:load','content:loaded'].forEach(function (ev) { document.addEventListener(ev, function () { wrapApBuilding(); setTimeout(attachHlsIfNeeded, 0); }); }); })();
ABSOLUTE0302 ну если где-то работает, а где-то нет, значит там есть ошибки или конфликты, смотрите их и исправляйте