如何在所有 PC 浏览器中播放 m3u8 播放列表?
Posted
技术标签:
【中文标题】如何在所有 PC 浏览器中播放 m3u8 播放列表?【英文标题】:How to play m3u8 playlist in all PC browsers? 【发布时间】:2011-07-27 20:07:48 【问题描述】:默认情况下,m3u8 文件可以在 Mac Safari 浏览器中播放,但不能在任何其他桌面浏览器中播放。在支持 html5 和非 HTML5 的所有浏览器中播放它们需要做什么?
【问题讨论】:
m3u8
播放列表文件是由 Nullsoft 团队为 Winamp 音乐播放器创建的播放列表文件。有两个挑战:1) 文件路径可以是位于客户端计算机本地的绝对文件,以及 2) 指向远程文件的绝对 URL 链接。您如何知道播放列表中包含的文件是否来自本地文件?
我使用了 flowplayer。它是免费和开源的,非常易于使用。
我在 Windows 10 上使用 Microsoft Edge 流式传输 m3u8 文件。
【参考方案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 即可开始播放。
【讨论】:
您能否提供更多信息? ***.com/help/how-to-answer 支持原生 HLS 的浏览器列表见en.wikipedia.org/wiki/…【参考方案3】:我使用了flowplayer。它非常容易设置和使用,它适用于所有浏览器并且是免费的,除非您想要自己的品牌......(与 JW 播放器不同)。
在此处获取流播放器Flow Player download
按照这个演示,我成功地设置了 HLS 播放。
HLS Demo
有一点需要注意,演示中没有提到。
-
您将需要 jquery > 1.7
您将在 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 离线视频但在浏览器上的功能。这是我的实际问题:***.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" controls preload></video>
然而,我还没有能够通过原生 HTML 控件让它们“全屏”显示……但我正在研究它……
【讨论】:
但这并不能回答 OP 的问题 - 你如何在 Mac 版 Safari 以外的浏览器中播放 M3U8(即 HTTP 直播流)。以上是关于如何在所有 PC 浏览器中播放 m3u8 播放列表?的主要内容,如果未能解决你的问题,请参考以下文章
关于H5播放Http Live Streaming m3u8格式视频
如何在 ckplayer 网页播放器中进行 m3u8 格式的流媒体直播