У меня есть простой скрипт HLS.JS для воспроизведения потока HLS с сервера HLS на
http://<my server address>/live/livestream.m3u8
Я следую руководству по #getting на HLS.JS на GitHub
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video id="video" controls autoplay muted></video>
<script>
var video = document.getElementById('video');
if(Hls.isSupported()) {
var hls = new Hls();
hls.loadSource('http://<my server address>/live/livestream.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
video.play();
});
}
else if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = 'http://<my server address>/live/livestream.m3u8';
video.addEventListener('loadedmetadata',function() {
video.play();
});
}
</script>
Фрагмент работает нормально, если я сохраняю его локально и открываю в любом браузере, и другие люди могут просматривать его, также открыв HTML в своем браузере. Но когда я пытаюсь использовать его как HTML, он не работает, например, помещая фрагмент в https://jsfiddle.net/, видеопоток не запускается. Это почему? Я могу предоставить точный IP-адрес для полной демонстрации, если кому-то понадобится помощь.
Это потому, что мой сервер не HTTPS?
Я использовал https://hls -js-latest.netlify.com / demo / , чтобы попытаться отладить проблему. Сначала это показывает проблему с CORS, но после того, как я перехожу в верхний правый угол, чтобы мой браузер загружал небезопасные скрипты, страница загружается нормально.
Попытка также передать этот фрагмент с HTTP-сервера, видео не будет воспроизводиться