【问题标题】:How to play m3u8 playlist in all PC browsers?如何在所有 PC 浏览器中播放 m3u8 播放列表?
【发布时间】:2023-03-28 15:38:01
【问题描述】:

默认情况下,m3u8 文件可以在 Mac Safari 浏览器中播放,但不能在任何其他桌面浏览器中播放。在支持 HTML5 和非 HTML5 的所有浏览器中播放它们需要做什么?

【问题讨论】:

  • m3u8 播放列表文件是由 Nullsoft 团队为 Winamp 音乐播放器创建的播放列表文件。有两个挑战:1) 文件路径可以是位于客户端计算机本地的绝对文件,以及 2) 指向远程文件的绝对 URL 链接。您如何知道播放列表中包含的文件是否来自本地文件?
  • 我使用了 flowplayer。它是免费和开源的,非常易于使用。
  • 我在 Windows 10 上使用 Microsoft Edge 流式传输 m3u8 文件。

标签: http-live-streaming


【解决方案1】:

不幸的是,HTML5 对视频的支持如此分散,以至于无论出于何种意图和目的,它在此时都毫无用处(至少作为主要焦点)。 M3U8 播放列表是 Apple HTTP Live Streaming,从名称可以看出,它们是(或至少开始是)Apple 标准,没有其他浏览器使用它们或 HTTP Live Streaming。

您可以安装一些程序来添加对 HLS 的支持。例如,一些公司生产了用 Flash 或 Silverlight 编写的 HLS 播放器。 Yospace 制作了一个用于 HLS 播放的 Flash SDK,其中包括一个 JWPlayer 媒体提供程序,它允许您在非 Flash 设备(阅读:iPhone/iPad)上使用 JW 的自动 HTML5 回退,而所有其他设备都可以获得 JWPlayer 体验。

许多公司都承诺“标准化浏览器视频支持”,但它们(到目前为止)都落空了,所以无论你选择什么选项,都将是某种妥协。

【讨论】:

  • m3u8 不是(也不是作为)Apple 标准。 m3u 文件格式早在 90 年代后期就开始作为 Winamp 播放列表文件,并在启用在线流支持时扩展为包含更长的文件名和 HTTP 文件。我应该知道这一点,因为我从一个非常早期的 Winamp 版本开始(可能是因为它是在线开始的)并且至今仍在使用它。
  • 虽然 .m3u 文件确实如此,但 .m3u8 文件是 Apple 对该标准的专有扩展,由其 HLS 协议专门使用并在datatracker.ietf.org/doc/draft-pantos-http-live-streaming中定义
  • 只有扩展来自 Apple,但 m3u8 最初是为了允许更长的文件名而创建的。在早期版本的操作系统中,文件名长度为 8 个字符。较长的文件名不受欢迎或存在缺陷,尤其是在 Windows 95 和 98 年代初期。扩展是苹果后来引入的,我同意你的观点。
  • 是否可以让 HLS 格式的视频在浏览器上供用户离线使用?是否可以将 HLS 视频存储在用户浏览器中(在索引数据库等中),然后直接从那里播放(至少在短期内)?
  • 理论上这是可能的,但实际上没有浏览器可以做到这一点。
【解决方案2】:

Microsoft Edge 播放 m3u8 文件,但您必须有 Windows 8 或 10... 只需打开 Microsoft Edge 并写入 m3u8 文件的 url 即可开始播放。

【讨论】:

【解决方案3】:

我使用了flowplayer。它非常容易设置和使用,它适用于所有浏览器并且是免费的,除非您想要自己的品牌......(与 JW 播放器不同)。

在此处获取流播放器Flow Player download

按照这个演示,我成功地设置了 HLS 播放。

HLS Demo

有一点需要注意,演示中没有提到。

  1. 您将需要 jquery > 1.7
  2. 您将在 HTML 中包含播放器的皮肤 CSS

这是我运行 HLS 的工作页面,例如:

<!DOCTYPE html>
<html>
   <head>
      <title>Player</title>
      <link rel="stylesheet" href="/client/static/flowplayer-6.0.5/skin/functional.css">
      <script src="/client/static/flowplayer-6.0.5/jquery-1.12.4.min.js"></script>
      <script src="/client/static/flowplayer-6.0.5/flowplayer.min.js"></script>
      <script src="/client/static/flowplayer-6.0.5/flowplayer.hlsjs.min.js"></script>
   </head>
   <body>
      <div>
         <h3>Sample Video</h3>
      </div>
      <div id="player">
        <div data-live="false" data-ratio="0.5625" class="flowplayer fixed-controls" data-volume="0" style="max-width: 800px; max-height: 450px;">
            <video data-title="Sample Video">
            <source type="application/x-mpegurl" src="http://:8000/video_cache/d_stream_f7ccc24921ca6123d80d7d1a1a4bfaa1/stream_f7ccc24921ca6123d80d7d1a1a4bfaa1.m3u8">
            </video>
        </div>
         <p hidden id="vid">f7ccc24921ca6123d80d7d1a1a4bfaa1</p>
      </div>
   </body>
</html>

【讨论】:

  • 是否可以让 HLS 格式的视频在浏览器上供用户离线使用?是否可以将 HLS 视频存储在用户浏览器中(在索引数据库等中),然后直接从那里播放(至少在短期内)?
  • @VikasBansal 你的意思是把浏览器设置为离线模式吗?
  • 实际上,我有需要构建一个功能以使视频离线可用的情况。类似于 youtube 离线视频但在浏览器上的功能。这是我的实际问题:stackoverflow.com/questions/45252054/…
  • @VikasBansal 最简单和最好的解决方案是公开可正常下载的文件的标准 mp4 版本,并使用 m3u8 进行流式传输
【解决方案4】:
<!DOCTYPE html>
<html>

<head>
    <meta charset=utf-8 />
    <title>Your title</title>


    <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
    <script src="https://unpkg.com/video.js/dist/video.js"></script>
    <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>

</head>

<body>
    <video id="my_video_1" class="video-js vjs-fluid vjs-default-skin" controls preload="auto" data-setup='{}'>
    <source src="https://aznbkcstreamer-ukso1.streaming.media.azure.net/c1b3bdd8-2486-4300-89f3-3e4e9eacb57d/GWMAWARDS.ism/manifest(format=m3u8-aapl)" type="application/x-mpegURL">
  </video>

    <script>
        var player = videojs('my_video_1');
        player.play();
    </script>

</body>

</html

使用您的播放列表/视频链接试试这个。只需更改 src 链接即可。

【讨论】:

    【解决方案5】:

    我不完全了解 .m3u8 播放列表的交易...但我不是特别喜欢它们.. 也就是说,this似乎认为它可以满足您的需求...github / etianen / html5media

    HTML5 视频和音频标签 将媒体嵌入到文档中很容易 作为嵌入图像。只需要 单个或标签。 HTML5 允许您将视频和音频嵌入到您的文档中...

    您所要做的就是在您的 HTML 文档中嵌入一个 javascript,然后使用某种魔法,或者缺少魔法……剩下的就完成了……

    <script src="/path/to/your/html5media.min.js"></script>
    

    我能够播放 .m3u8 电影,通过本地 html5 嵌入从桌面浏览器中的 Wowza 服务器流式传输,例如...

    <video src="video.mp4" width="320" height="240" controls preload></video>
    

    然而,我还没有能够通过原生 HTML 控件让它们“全屏”显示……但我正在研究它……

    【讨论】:

    • 但这并不能回答 OP 的问题 - 你如何在 Mac 版 Safari 以外的浏览器中播放 M3U8(即 HTTP 直播流)。
    猜你喜欢
    • 2014-12-18
    • 2013-05-13
    • 2015-05-27
    • 2014-03-10
    • 2013-12-16
    • 2016-05-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多