JSFiddle - React, Tailwind, and code Playground

by wales

HTML

<script src="https://cdn.jsdelivr.net/npm/hls.js@1"></script>
  <div class="player-wrap">
    <video id="video" controls playsinline></video>
  </div>

CSS

body {
      margin: 0;
      min-height: 100vh;
      display: grid;
      place-items: center;
      background: #111;
      color: #fff;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    }

    .player-wrap {
      width: 1920px;
      height: 1080px;
      background: #000;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    video {
      width: 1920px;
      height: 1080px;
      background: #000;
      display: block;
    }

JavaScript

// 換成你的 m3u8 連結
    const m3u8Url = "https://aka46p.akamaized.net/superapp/f691afb9-9767-45ea-b7c8-8bde2973e034/master.m3u8";

    const video = document.getElementById("video");

    if (Hls.isSupported()) {
      const hls = new Hls();
      hls.loadSource(m3u8Url);
      hls.attachMedia(video);
      hls.on(Hls.Events.MANIFEST_PARSED, () => {
        video.play().catch(() => {
          // 可能被瀏覽器自動播放政策阻擋,保留 controls 讓使用者手動播放
        });
      });
    } else if (video.canPlayType("application/vnd.apple.mpegurl")) {
      // Safari 原生支援 HLS
      video.src = m3u8Url;
      video.addEventListener("loadedmetadata", () => {
        video.play().catch(() => {
          // 可能被瀏覽器自動播放政策阻擋
        });
      });
    } else {
      alert("你的瀏覽器不支援 HLS 播放");
    }