让 Chrome直接播放 .m3u8 视频流

通过 JS 库如 hls.js 就可以让 Chrome(或其他不原生支持 HLS 的浏览器)直接播放 .m3u8 视频流。下面我来详细解释怎么使用 hls.js 来播放 .m3u8 文件。


✅ 什么是 hls.js

hls.js 是一个用 JavaScript 编写的客户端 HLS 播放库,它可以让不原生支持 HLS 的浏览器(比如 Chrome、Firefox)通过 <video> 标签播放 .m3u8 视频。


✅ 使用 hls.js 播放 .m3u8 的完整步骤:

🔧 步骤 1:引入 hls.js

你可以使用 CDN 链接引入它:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

🎬 步骤 2:添加 <video> 标签

<video id="video" controls width="640" height="360"></video>

💻 步骤 3:编写播放逻辑

<script>
  const video = document.getElementById('video');
  const videoSrc = 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8'; // 这里替换成你的 m3u8 地址

  if (Hls.isSupported()) {
    const hls = new Hls();
    hls.loadSource(videoSrc);
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED, function () {
      video.play();
    });
  } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
    // 兼容 Safari
    video.src = videoSrc;
    video.addEventListener('loadedmetadata', function () {
      video.play();
    });
  } else {
    alert("你的浏览器不支持播放 HLS 视频");
  }
</script>

📄 完整的 HTML 示例(可直接保存运行)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>HLS.js 播放器</title>
  <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
</head>
<body>
  <h2>使用 HLS.js 播放 .m3u8</h2>
  <video id="video" controls width="800" height="450"></video>

  <script>
    const video = document.getElementById('video');
    const videoSrc = 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8'; // 替换成你的视频源

    if (Hls.isSupported()) {
      const hls = new Hls();
      hls.loadSource(videoSrc);
      hls.attachMedia(video);
      hls.on(Hls.Events.MANIFEST_PARSED, function () {
        video.play();
      });
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
      video.src = videoSrc;
      video.addEventListener('loadedmetadata', function () {
        video.play();
      });
    } else {
      alert('此浏览器不支持 HLS 播放。');
    }
  </script>
</body>
</html>

✅ 使用建议

  • .m3u8 文件必须是公网可访问的链接(或者你有正确的本地服务器支持 CORS)。
  • 如果你本地打开 .html 文件,浏览器可能会限制跨域访问。建议用本地服务器(如 VSCode + Live Server)打开。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>HLS.js 播放器</title>
  <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      background: black;
    }
    video {
      width: 100%;
      height: 100%;
      object-fit: contain;
      background: black;
    }
  </style>
</head>
<body>
  <video id="video" controls></video>

  <script>
    const video = document.getElementById('video');
    const videoSrc = 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8'; // 替换为你的视频流地址

    function startPlayback() {
      video.volume = 1.0; // 设置音量为 100%
      video.muted = false;

      // 请求全屏
      if (video.requestFullscreen) {
        video.requestFullscreen();
      } else if (video.webkitRequestFullscreen) {
        video.webkitRequestFullscreen();
      } else if (video.msRequestFullscreen) {
        video.msRequestFullscreen();
      }

      video.play().catch((err) => {
        console.warn('自动播放被阻止:', err);
      });
    }

    if (Hls.isSupported()) {
      const hls = new Hls();
      hls.loadSource(videoSrc);
      hls.attachMedia(video);
      hls.on(Hls.Events.MANIFEST_PARSED, function () {
        startPlayback();
      });
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
      video.src = videoSrc;
      video.addEventListener('loadedmetadata', function () {
        startPlayback();
      });
    } else {
      alert('此浏览器不支持 HLS 播放。');
    }
  </script>
</body>
</html>
No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next