2017-04-07 80 views
2

我正在试图在safari iOS上使用具有引擎盖下的three.js的Aframe流。但视频只显示音频播放的黑屏。视频src的类型是.m3u8。我试图通读大量相关帖子,但没有一篇似乎有适当的解决方案。 HLS & WebGL可以在iOS上玩吗?如果没有,有人可以帮我解决。Hls在iOS/Safari上的视频流

上可用GitHub上的问题,一对夫妇的讨论:

HLS m3u8 video streaming

HLS on Safari

回答

2

你的问题:

是不是某种一厢情愿的获得HLS & WebGL可以在iOS上玩吗?

是的,一厢情愿:-)问题/问题/错误是苹果,而不是任何库。无论JS库如何,A-Frame,Three等,这对于iOS中的任何浏览器(iOS上的所有浏览器基本上都是Safari的包装器)和OSX Safari都是一个问题。

的问题是,这个(从我的理解):

  1. 在WebGL的历史的某个时刻,出现了跨起源内容(视频,图像等)的限制。我找不到这个源代码,但我记得在某处阅读它,所以这可能不是100%准确。
  2. 最近(几年前?2015?)所有主流浏览器都得出结论:用于WebGL的跨媒体媒体是安全的。除Apple/Safari之外。
  3. 对于大多数浏览器,<video>元素上的crossorigin属性可能表示此内容来自其他来源。在Safari中,无论出于何种原因,该属性都被忽略或未实现。实际上,它看起来像Safari基于的WebKit,fixed this as far back as 2015,但Apple仍未实现它。即使苹果refuses to comment on any progress

可能的解决方法:在Safari

  1. WebGL的工作有进步(而不是像HLS /短跑流).mp4视频。查看iOS/Safari上Facebook上的任何360视频(网站,而不是应用程序),并且您会注意到源是.mp4
  2. 使用HLS(或Dash),但不带WebGL播放视频。看看YouTube上的任何360视频(网站,而不是应用),我认为他们正在使用HLS或Dash,但重点是他们的视频,而Facebook没有。

下面是真正问题的一个很好的起点:link

这里是另一个详细的线程:link