Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >A帧视频不播放,只有第1帧可见

A帧视频不播放,只有第1帧可见
EN

Stack Overflow用户
提问于 2022-02-25 12:22:54
回答 1查看 1K关注 0票数 0

我似乎无法播放我的视频。起初,它只是一个黑色的飞机,但我设法让它,我可以看到第一帧的视频,但它不播放,我也在使用MindAR。

视频是一个4秒长608 x 1408 h.264 MPEG视频。我试过另一个1080 x 1920的视频,但那一个只是显示一个黑色的飞机。

目前只测试我的Macbook Pro 14英寸,但最终将是安卓和iOS,因为我正在制作一个AR出版物。

https://glitch.com/edit/#!/unreal-realities-test https://unreal-realities-test.glitch.me

代码语言:javascript
运行
AI代码解释
复制
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.1.4/dist/mindar-image.prod.js"></script>
    <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/donmccurdy/aframe-extras@v6.1.1/dist/aframe-extras.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.1.4/dist/mindar-image-aframe.prod.js"></script>
    
    <script>AFRAME.registerComponent("play-on-click", {
  init: function () {
    this.onClick = this.onClick.bind(this);
  },
  play: function () {
    window.addEventListener("click", this.onClick);
  },
  pause: function () {
    window.removeEventListener("click", this.onClick);
  },
  onClick: function (evt) {
    var videoEl = this.el.getAttribute("material").src;
    if (!videoEl) {
      return;
    }
    this.el.object3D.visible = true;
    videoEl.play();
  },
});
</script>
<script>
    AFRAME.registerComponent('hide-on-play', {
  schema: {type: 'selector'},
  init: function () {
    this.onPlaying = this.onPlaying.bind(this);
    this.onPause = this.onPause.bind(this);
    this.el.object3D.visible = !this.data.playing;
  },
  play: function () {
    if (this.data) {
      this.data.addEventListener('playing', this.onPlaying);
      this.data.addEventListener('pause', this.onPause);
    }
  },
  pause: function () {
    if (this.data) {
      this.data.removeEventListener('playing', this.onPlaying);
      this.data.removeEventListener('pause', this.onPause);
    }
  },
  onPlaying: function (evt) {
    this.el.object3D.visible = false;
  },
  onPause: function (evt) {
    this.el.object3D.visible = true;
  }
});</script>
  </head>
  <body>
    <a-scene
      mindar-image="imageTargetSrc: https://cdn.glitch.global/644ffc8d-f16a-4136-9daf-b2a8d5be4cd1/ASCIItargets.mind?v=1646650005503; maxTrack: 2"
      color-space="sRGB"
      renderer="colorManagement: true, physicallyCorrectLights"
      vr-mode-ui="enabled: false"
      device-orientation-permission-ui="enabled: false"
    >
      <a-assets>
        <img
          id="card0"
          src="https://cdn.glitch.global/644ffc8d-f16a-4136-9daf-b2a8d5be4cd1/Jesper1_2.jpg?v=1645538130237"
        />
        <a-asset-item
          id="card1"
          src="https://cdn.glitch.global/644ffc8d-f16a-4136-9daf-b2a8d5be4cd1/3D%20Scan%20Test.gltf?v=1645538142025"
        ></a-asset-item>
        <video
          id="video"
          preload="auto"
          src="https://cdn.glitch.global/644ffc8d-f16a-4136-9daf-b2a8d5be4cd1/NFTDemo.mp4?v=1646662685556"
          autoplay
          loop="true"
          crossorigin="anonymous"
          width="1"
          height="0.552"
          webkit-playsinline
        ></video>
      </a-assets>



      <a-entity mindar-image-target="targetIndex: 2">
        <a-image
          src="#card0"
          alpha-test="0.5"
          position="0 0 0"
          height="0.552"
          width="1"
          material=""
          geometry=""
        >
        </a-image>
      </a-entity>

      <a-entity mindar-image-target="targetIndex: 1">
        <a-gltf-model
          rotation="0 -270 0"
          position="0 0 0"
          scale="1 1 1"
          src="#card1"
          animation="property: position; to: 0 0.2 0.2; dur: 1000; easing: easeInOutQuad; loop: true; dir: alternate"
        ></a-gltf-model>
      </a-entity>

      <a-entity
        mindar-image-target="targetIndex: 0"
        material="shader: flat; src: #video"
        geometry="primitive: plane; width: 2.25; height: 5.25"
        position="0 0 0"
        rotation="0 0 0"
        play-on-click
        visible="false"
      >
      </a-entity>
      
      <a-camera position="0 0 0" look-controls="enabled: false">
        <a-entity
          position="0 0 -1.5"
          text="align: center;
                width: 4;
                wrapCount: 100;
                color: black;
                value: Tap to allow videos to play"
          hide-on-play="#video">
        
        </a-entity>
      </a-camera>
      
    </a-scene>
  </body>
</html>

EN

回答 1

Stack Overflow用户

发布于 2022-02-28 08:04:01

根据浏览器策略,目前大多数浏览器不允许未经用户同意的视频自动播放。您需要通过调用视频元素上的play()方法来捕获单击或点击并触发视频回放。无法合成click事件:一个框架实体不能工作,您需要一个用户单击的2D DOM元素( 窗户元素将允许用户单击屏幕上的任何位置,但也可以在用户需要点击的某个地方拥有一些按钮)。

请参见一个框架示例,该示例显示一个模态UI (使用A-Frame创建)以请求用户启动视频播放(组件侦听窗口元素上的单击/点击):https://aframe.io/aframe/examples/test/video/

相应的组件逻辑可以在:https://github.com/aframevr/aframe/blob/master/examples/js/play-on-click.js#L16中找到

您需要下面的代码:

代码语言:javascript
运行
AI代码解释
复制
 window.addEventListener('click', function () { 
   document.querySelector('#video').play();
 });

我修改了您的示例,以说明如何在用户单击时播放视频。我漏掉了心灵的部分。视频提要涵盖UI,我认为它与这个问题无关:视频回放必须由用户操作触发。

https://glitch.com/edit/#!/roomy-hyper-bear

注意,play-on-clickhide-on-play不是内置的A框架组件,您必须在页面中导入它们(参见上面示例中的index.html )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71271355

复制
相关文章
第一个PhoneGap(cordova)应用
PhoneGap是一套能让你使用HTML5轻松调用本地API接口和发布应用到商店的应用开发平台。官方说有低成本,低开发周期,轻量化等优点,这些咱暂时也没法证明,略过不表。但是有一条跨平台,却是很明显的优势。因为它采用HTML5+JavaScript的模式来开发应用。PhoneGap用JavaScript统一封装了几大平台的本地api(Andriod,IOS,WP8/7,WINRT)等等。。这样的话从一个平台移植到另外一个平台只需要把HTML代码跟JS原封不动的拿过去,打包一下就可以了。PhoneGap后来被Adobe收购,然后又贡献给了开源社区,现在由Apache管理,改名cordova。
MJ.Zhou
2022/05/07
4260
第一个PhoneGap(cordova)应用
[译] React Native vs. Cordova、PhoneGap、Ionic,等等
在前面的文章中,我曾说过 React Native 很棒,因为它能让我们使用原生 UI 来开发应用。React Native 应用的用户体验要比使用 WebView UI 的好很多。但是,“原生”的真正含义到底是什么呢?什么是 WebView UI ?什么原生 UI 比 WebView UI 好呢?React Native 相比于其他移动端框架 (比如 PhoneGap、Cordova 和 Ionic) 又如何呢?
用户1687375
2018/10/22
3.3K0
[译] React Native vs. Cordova、PhoneGap、Ionic,等等
给Ionic写一个cordova(PhoneGap)插件
 给Ionic写一个cordova(PhoneGap)插件 之前由javaWeb转html5开发,由于面临新技术,遂在适应的过程中极为挣扎,不过还好~,这个过程也极为短暂;现如今面临一些较为复杂的需求还会有一丝丝头痛,却没有一开始那么强烈了。。。 在正式写下文之前,我先感谢公司大boss:王总,感谢他让我进入了一个有挑战性的技术公司 并在这个过程中一直鼓励我不断汲取新技术,同时也指正了我在开发中的一些不太好的习惯,十分感谢!   再~,感谢在开发中给予我太多帮助的杜勇以及孙金~,不论是需求讨论还是具体
上帝
2018/05/18
2K0
给Ionic写一个cordova(PhoneGap)插件
 给Ionic写一个cordova(PhoneGap)插件 之前由javaWeb转html5开发,由于面临新技术,遂在适应的过程中极为挣扎,不过还好~,这个过程也极为短暂;现如今面临一些较为复杂的需求还会有一丝丝头痛,却没有一开始那么强烈了。。。 在正式写下文之前,我先感谢公司大boss:王总,感谢他让我进入了一个有挑战性的技术公司 并在这个过程中一直鼓励我不断汲取新技术,同时也指正了我在开发中的一些不太好的习惯,十分感谢!   再~,感谢在开发中给予我太多帮助的杜勇以及孙金~,不论是需求讨论还是具体
上帝
2018/06/26
1.4K0
Hybrid App移动应用开发初探
  Native App(原生App)是用原生语言(Object-C/Java/C#/....)开发,用户需要下载安装的手机应用。
Edison Zhou
2018/08/21
3.5K0
Hybrid App移动应用开发初探
几个跨平台移动App开发方案框架比较
根据一些老博客里面的内容,现在整理一下目前流行的跨平台移动App开发技术的特点,并将几个不同的开发平台框架进行比较说明,仅供大家参考。
全栈程序员站长
2022/09/04
8K0
几个跨平台移动App开发方案框架比较
Android GPS学习 (二) :GPS 服务启动以及初始化流程
SystemServer.java的startOtherServices方法中添加LocationManagerService方法的代码如下,
用户7557625
2020/07/15
1.7K0
套壳
phonegap已经不再是phonegap,而是phonegap build,用来打包的。
libo1106
2018/08/08
8310
Android GPS学习 (一) :GPS 启动流程
packages/apps/Settings/src/com/android/settings/location/LocationSwitchBarController.java
用户7557625
2020/07/15
2.4K0
CCD相机如何用于焊缝跟踪系统
随着焊接自动化技术的迅猛发展,焊缝跟踪系统成为焊接领域内的一项重要课题,采用焊缝跟踪系统实现焊接过程的自动化成为未来的必然,因此很多学科的技术都应用到了焊缝跟踪这一系统中来,其中CCD相机就是不可获取的一部分。
创想智控
2022/11/01
4780
CCD相机如何用于焊缝跟踪系统
几款移动跨平台App开发框架比较[通俗易懂]
海豚精灵:https://www.whhtjl.com;优课GO:https://mgo.whhtjl.com
全栈程序员站长
2022/08/18
8.3K0
几款移动跨平台App开发框架比较[通俗易懂]
用Ionic开发hybrid APP
使用phonegap开发APP的优劣在此不必细说,快速,简单,跨平台,以及随着iOS,Android本身对webview优化所带来的不错的性能,便是其独有的优势。而且私以为在目前激烈而又变化快速的移动APP市场环境下,用phonegap来开发APP未尝不是一种低成本mvp的方案,快速发布,成王败寇^-^
小刀c
2022/08/16
2.5K0
用Ionic开发hybrid APP
ionic hybrid app:产品还是玩具?
IMWeb前端团队
2017/12/29
5.6K0
ionic hybrid app:产品还是玩具?
ionic hybrid app:产品还是玩具?
提到跨终端应用开发,很容易想到最近很火的React Native。使用React Native开发出的APP本质上是Native APP。在跨端应用开发这一领域内还有另一块:Hybrid APP。本文研究的inoic framework就是一种hybrid app的开发框架。
IMWeb前端团队
2019/12/04
3.3K0
ionic hybrid app:产品还是玩具?
创想激光焊缝跟踪系统用于TIG焊接
随着科技的不断发展和工业制造的进步,焊接作为一种重要的连接工艺,在各个领域都扮演着关键角色。TIG(Tungsten Inert Gas)焊接是一种常见且高质量的焊接方法,它在航空航天、汽车制造、管道焊接等领域得到广泛应用。然而,TIG焊接过程中的焊缝跟踪一直是一个具有挑战性的问题。为了提高焊接的质量和效率,创想激光焊缝跟踪系统应运而生。
创想智控
2023/07/31
1810
创想激光焊缝跟踪系统用于TIG焊接
H5 手机 App 开发入门:技术篇
如果你熟悉 Java 语言,可以学习安卓开发;如果熟悉脚本语言(比如 Python 或 Ruby),可以学习 Swift 语言,进行 iOS 开发;如果像我一样,比较熟悉 Web 网页技术,那么 H5 开发是最容易上手的。
ruanyf
2020/01/22
6.9K0
前端开发我为什么选择cordova
cordova与phonegap有什么关系? phoengap 官方网址:http://phonegap.com 如果能了解一个框架的兴起还是一件比较有趣的事。08年一次ios开发者大会上来自Nitobi软件公司的几个家伙突发奇想,提出一个想法,想做一个工具来弥补web和ios开发之间的不足,并提出 Bridging the gap between the web and the iPhone sdk。一开始的目标并不是很大,但是做到了现在的written once,run everywhere。我们
xiangzhihong
2018/02/01
1.3K0
前端开发我为什么选择cordova
8个hybridapp开发工具_android hybrid
Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。
全栈程序员站长
2022/09/30
2.3K0
8个hybridapp开发工具_android hybrid
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码[通俗易懂]
大家好,又见面了,我是全栈君。 PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网> 看引擎> 开源产品 ---- 依照
全栈程序员站长
2022/07/08
2K0
点击加载更多

相似问题

PhoneGap/Cordova获取GPS卫星数量

21

用于安卓系统的PhoneGap cordova插件

10

Phonegap GPS定位插件cordova- plugin -GPS定位

16

Phonegap启用gps服务

26

创建实时GPS跟踪系统

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文