Задать вопрос
@YungJabo

Почему возникает проблема с воспроизведением hls в chrome?

Пытаюсь запустить трансляцию .m3u8 в плеере браузера через библиотеку hls.js.
В firefox все воспроизводится отлично

Источник потока:
Поток получаю из локального Ace Stream engine:
http://127.0.0.1:6878/ace/manifest.m3u8?content_id=...


Также внутри .m3u8 содержатся ссылки на .ts сегменты вида:
http://127.0.0.1:6878/ace/c/.../0.ts
http://127.0.0.1:6878/ace/c/.../1.ts
...


Проблема:
В Firefox видео воспроизводится без проблем
В Chrome:
  • .m3u8 загружается
  • .ts сегменты загружаются (статус 200)

но видео не воспроизводится (вечная загрузка)

CORS явно не падает (запросы проходят)
Поток открывается и работает в VLC

Код компонента:
import Hls from "hls.js";
import { useEffect, useRef } from "react";
import { useStore } from "../../store";

export const Video = () => {
  const videoRef = useRef(null);
  const url = useStore((state) => state.url);

  useEffect(() => {
    if (!url || !videoRef.current) return;

    let hls;

    if (Hls.isSupported()) {
      hls = new Hls({
        enableWorker: true,
        lowLatencyMode: true,
        backBufferLength: 90,
      });
      hls.loadSource(url);
      hls.attachMedia(videoRef.current);

      hls.on(Hls.Events.ERROR, (event, data) => {
        console.error("HLS error:", data);
      });
    } else if (videoRef.current.canPlayType("application/vnd.apple.mpegurl")) {
      videoRef.current.src = url;
    }

    return () => {
      if (hls) {
        hls.destroy();
      }
    };
  }, [url]);

  return (
    <div className="video">
      <video ref={videoRef} controls style={{ width: "100%" }} />
    </div>
  );
};


69bd671d5b1e0900850506.png
  • Вопрос задан
  • 28 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы