HLS 实时流在带有 HTML 5 <video> 标签的 OS X El Capitan 上无法在 Safari 中运行

HLS live streams not working in Safari on OS X El Capitan with the HTML 5 <video> tag

我看到一个非常奇怪的问题,我可以在旧版本的 OS X 上通过 HLS(mpeg-TS 作为容器)查看实时视频流,但不能在最新版本中查看版本(埃尔卡皮坦)。我在这两种情况下都使用 Safari 9.0.1。

基本上,我有一个微不足道的 HTML 5 <video> 标签,将直播流的 URL 作为来源。在旧版本的 OS X 中播放没有问题,但在 OS X 10.11.1 上它将显示 最多 一帧,然后不播放。

这里有一个小代码片段可以重现,带有一个用于测试的流。

<!DOCTYPE html> 
<html> 
  <body> 
    <video width="400" controls autoplay>
      <source src="http://204.101.47.140:8080/cameras/1eq0U31IYNNWUOss/live.m3u8?stream=3ddf9e2c-46f6-40a0-e010-272d1a058369">
    </video> 
  </body> 
</html>

浏览器控制台中没有可见的相关错误,我已经能够在 OS X Mavericks/Yosemite 上可靠地重现此工作,而不是跨多台机器在 El Capitan 上工作。

需要对上述代码进行哪些更改才能使其在所有最新版本的 OS X 上都能在 Safari 上运行?

您的视频源不是有效的 HLS 流。这是一个 HLS/pseudo-streaming 组合。流主资源 (http://204.101.47.140:8080/cameras/1eq0U31IYNNWUOss/live.m3u8?stream=3ddf9e2c-46f6-40a0-e010-272d1a058369) 是包含单个元素的有效 HLS 播放列表。到目前为止,一切都很好。然而,该元素不是整个视频流的有限片段。这是一种资源,当请求时开始伪流式传输整个直播流。

这不是有效的 HLS 流。我不知道你使用的是哪个媒体服务器,如果有的话,但它没有正确配置。