如何使用HTML5 <video>元素播放m3u8(文件)视频?

vjk*_*jks 6 php html5 html5-video

我遇到了这个stackoverflow链接,讨论播放m3u8文件:播放带有HTML视频标签的m3u8文件

我尝试过类似的东西来播放m3u8文件中的视频链接,就像在phpfiddle上一样:

    echo '<video width="352" height="198" controls>
<source src="https://udemy-adaptive-streaming-prod.udemy.com/9287/72689/2012-04-30_04-09-49-f5ad53b1736807ee7f8837b37115aeeb/hls/677cda5a7077be8d22348b5edebd77db.m3u8?sign=%252BCIehx2LKCxUcNSU33mWdfm5SbA%253D&mign=EEsJDxEabAoMa1kFRgIfbEkIDw8RHGwKDGtZXAFYS3lHSwgIGEoJUl57U1sfTBQlBTYIFRkNEVlZfVtaAl5Dc15fAQ==&quality=HD" type="application/x-mpegURL"></video>';
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它似乎显示了视频元素,但视频没有加载到其中.有可能以这种方式播放m3u8文件吗?我想播放的m3u8文件位于"https://www.udemy.com/excel-tutorial/

谢谢你的帮助.

Jah*_*mic 13

使用github上的JavaScript HLS客户端hls.js包.被许多成熟的组织使用.适用于所有浏览器.

一个快速示例页面:

<html>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
    <video id="video" controls></video>
    <script>
    if(Hls.isSupported())
    {
        var video = document.getElementById('video');
        var hls = new Hls();
        hls.loadSource('playlist.m3u8');
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED,function()
        {
            video.play();
        });
    }
    else if (video.canPlayType('application/vnd.apple.mpegurl'))
    {
        video.src = 'playlist.m3u8';
        video.addEventListener('canplay',function()
        {
            video.play();
        });
    }
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

将'playlist.m3u8'替换为您的播放列表.

  • 这是完美的。谢谢 (3认同)

Thi*_*tte 0

m3u8 文件是 HLS 清单,它支持自适应流式传输。要播放 HLS 流,您需要找到 HLS 视频播放器,以便在每个浏览器上跨设备播放。您甚至可以自己构建一个,例如使用 JavaScript。

或者,您可以通过google 搜索免费的 HLS 播放器(通常缺乏功能),或使用商业 HLS 播放器,例如THEOplayer