AR app:Uncaught(in promise)DOMException:play()只能由用户手势发起

时间:2016-10-14 10:15:53

标签: javascript html5-video

我知道这个问题已被问过1000次。但这是完全不同的。

我正在使用JSartoolkit在Chrome Android上制作AR网络应用。这很简单:

  • 当我在网络摄像头流上检测到标记时,我会播放(play())视频
  • 当我没有检测到流上的任何标记时,我暂停(pause())视频元素
  • 当我更改标记时,我播放另一个视频(只是更改视频元素的src)

我尝试了两种方法:

使用内置事件getMarker

            arController.addEventListener('getMarker', function (e) {
                var marker = e.data.marker.idMatrix;
                if(e.data.type > -1 && marker >-1){
                    handleNewMarker(marker); // will do something to the video
                }
            });

抛出错误:Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.我理解:这是一个真实的用户操作,但该方法是一个JSartoolkit内置事件,所以我没关系它没有这个事实认识到它。

第二次尝试,使用devicemotion

        window.addEventListener("devicemotion", function (event) {

            if(marker1.visible){
                videoStatus.currentVideoEl.play();
            }
            else {
                videoStatus.currentVideoEl.pause();
            }

        }, true);

这一次,应该识别此事件,我们都同意这是一个用户手势。

我也尝试手动触发触摸事件(jQuery和纯JS),但在所有情况下,它都会抛出相同的错误:Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.

AR检测和设备运动应被视为用户手势。但它不是,所以我的问题是:当我检测到标记时如何播放/暂停视频元素?

0 个答案:

没有答案