1

我们使用这个框架https://aframe.io/来开发虚拟现实网站。我们的场景包含带有视频纹理的球体。它在台式机和一些安卓设备上运行良好,但我们无法在 iPhone 6 上开始视频播放。移动 Safari 仅显示第一帧视频。有人对如何解决这个问题有任何想法吗?

这是代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Player</title>
    <meta name="description" content="Player">
    <script src="https://aframe.io/releases/latest/aframe.min.js"></script>
  </head>
  <body>
    <a-scene>
         <a-camera position="0 0 0" cursor="fuse: true; maxDistance: 30; timeout: 3000" wasd-controls-enabled="true"></a-camera>
         <!-- Creating 360 deg screen --> 
       <a-videosphere src="/images/super_cute_cat.mp4" autoplay="true" loop="true" rotation="0 0 0"></a-videosphere>
       </a-scene>
    </body>
</html>
4

3 回答 3

1

此问题在https://github.com/aframevr/aframe/issues/316#issuecomment-183006679中有详细说明

iOS 对播放内嵌视频有限制。我们需要webkit-playsinline在视频元素上定义。我们需要将应用程序固定到主屏幕才能正常工作。

我们目前正在为 iOS 开发模式,以帮助在 iOS 重新访问此限制时提供这种体验。

编辑:或者,您不必将应用程序固定到主屏幕。但视频纹理将在 iOS 视频播放器中启动。用户可以关闭此视频,然后向上滚动以隐藏浏览器镶边。但这种体验可以说比将应用程序固定在主屏幕上更糟糕,尤其是当你有多个视频纹理时。

于 2016-02-23T01:16:25.550 回答
0

目前我让它在带有 Firefox 的 Android 上运行,确保选中设置->高级->自动播放。

否则,如果它固定在主屏幕上,它对我有用。

我相信很多网络供应商都会致力于让 VR 与视频一起工作。

于 2016-05-10T03:37:58.927 回答
0

更新:(旧答案不再适用)

使用iphone-inline-video JS 模块。您可以让您的 360 度视频在线播放(无需固定到主屏幕)。

我已尝试更新该模块的文档,以便在此处演示如何将 Aframe 与 iOS 一起使用

这是完整性的来源(您的视频必须是本地的,见下文):

<!DOCTYPE html>
<!-- Source: https://github.com/aframevr/aframe/blob/v0.3.2/examples/boilerplate/360-video/index.html -->
<html>
  <head>
    <meta charset="utf-8">
    <title>Aframe 360 Video with iOS Support</title>
    <meta name="description" content="360 Video — A-Frame">
    <style>
      #playoverlay { position: relative; }

      #play-button {
        position: absolute;
        bottom: 30px;
        left: 30px;
      }

      /* Hide native iOS controls */
      .IIV::-webkit-media-controls-play-button,
      .IIV::-webkit-media-controls-start-playback-button {
        opacity: 0;
        pointer-events: none;
        width: 5px;
      }
    </style>
  </head>
  <body>
    <a-scene>
      <a-assets>
        <video id="video" src="sample.mp4" autoplay loop crossorigin playsinline></video>
      </a-assets>
      <a-videosphere src="#video" rotation="0 180 0"></a-videosphere>
    </a-scene>

    <div id="playoverlay">
      <button id="play-button">Play / Pause</button>
    </div>

    <script src="https://aframe.io/aframe/dist/aframe.js"></script>
    <script src="../dist/iphone-inline-video.browser.js"></script>
    <script>
      (function() {
        var video = document.querySelector('#video');
        window.makeVideoPlayableInline(video, /* mute necessary for autoplay*/ false);

        var playButton = document.querySelector('#play-button');
        playButton.addEventListener('click', function(e) {
          if (video.paused) {
            video.play();
          } else {
            video.pause();
          }
        });
      })();
    </script>
  </body>
</html>

iOS/移动 Safari 警告:

iOS视频源上必须是本地的(iOS/Safari 似乎是唯一有视频 CORS 问题的主要浏览器,并且src(取决于软件/硬件),视频可能需要在一定的分辨率下。例如,支持iPhone 5,我发现我无法播放任何大于 1920x1080 的视频,YMMV...

其他注意事项:

  • 通过控件控制 360 度视频的音频是不行的。iOS Safari 上的音量是只读的(请参阅此处)。
  • iOS 上的 Safari 不允许在 iFrames 中进行陀螺仪/传感器检测- 因此,如果您希望陀螺仪/加速度计正常工作,请确保您的视频没有嵌入到其他任何地方(请参阅此处),这样您的 iOS 用户就不会得到任何好处A-Frame免费提供的运动控制。
  • iOS/Safari 不支持全屏( iOS Safari doesn't have a fullscreen API, but we do on Chrome on Android, Firefox, and IE 11+),请参阅此处。“Safari 支持全屏视频”的论点仅在它回退到其本机播放器时才有效(在这种情况下,A-Frame/Three.js 环绕画布球体的 360 度视频纹理不起作用,因为您有一个平面360 度视频,看起来很糟糕)。

让视频(在我的情况下是 360 度视频)在 iOS 上播放是一个相当大的挑战,但可以通过大量的让步来实现。

于 2016-10-20T22:10:05.730 回答