Cocos实例3:VideoPlayer组件使用常见问题集

VideoPlayer组件使用常见问题集

Q1:为什么视频不能自动播放?即使勾选了PlayOnAwake属性。

  • 首先要确定是不是平台限制,在Web平台下,某些浏览器出于安全性和用户体验考虑,会阻止网页内嵌视频自动播放音频。在这种情况下,即使设置了 playOnAwake 也可能不会自动播放,除非用户有交互行为(如点击页面)。
  • 其次检查是不是文件没有完全加载,大体积的视频资源加载较慢,需要等加载完成后才会播放。如果是这个问题,可以通过预加载视频资源或在代码中监听META_LOADED(视频信息加载完成),加载完成后再play视频。这里需要注意监听事件,官方提供了READY_TO_PLAY,但亲测部分平台是无效的。
  • 另外检查下节点或父节点的active是否为true,如果节点在其父节点之前激活,可能会导致 playOnAwake 不生效。
  • 有些浏览器允许自动播放视频,但如果视频有音音轨也可能会禁止自动播放,因为和前面一样,平台可能会阻止音频自动播放,除非用户有交互行为。实际上大部分情况需要在多平台发布,需要尽量避免第四种情况的发生。

为什么VideoPlayer组件在代码中play不生效?

  • 排除资源问题(视频格式和编码不支持),Web平台存在浏览器安全策略限制,会阻止自动播放音、视频。需要在用户交互(如点击)之后才能播放视频。

为什么VideoPlayer play在交互逻辑中,预览视频仍不能播放,往往会停在第一帧或着黑屏?

  • 排除资源问题,可能是视频未加载完成,可以监听onMetaLoaded处理播放逻辑;没有在用户交互时同步播放,异步播放会导致视频播放不生效。

为什么在VideoPlayer节点上添加透明组件无效果

  • VideoPlayer组件渲染的是底层的WebGL视频纹理,它的透明度控制不同于普通的2D UI节点。CocosCreator中VideoPlayer组件不支持透明度控制

为什么VideoPlayer设置层级无效?

  • VideoPlayer 节点与其他节点一样,存在于场景的节点树结构中,受父节点是否激活影响。在Web环境中,VideoPlayer是通过H5原生 元素实现的,这种情况下,视频元素不受Cocos Creator的普通层级控制,而是依赖于DOM层级。VideoPlayer在Creator中默认显示在最上层,但也提供了设置在最下层的方式:1.在项目设置->宏配置->勾选ENABLE_TRANSPARENT_CANVAS;
    2.在属性检查器中勾选VideoPlayer的stayOnBottom属性。
    需要注意的是,如果VideoPlayer设置在最下层,则无法监听VideoPlayerEvent中的clicked事件,如果需要可以在对应的位置添加一个UI节点用于响应事件。

Q6:如何在VideoPlayer的上层显示UI

Q7:如何实现VideoPlayer在中间层

  • CocosCreator中的Mask组件适用于2D Sprite 或者 UI 元素的内容裁剪显示,受限于VideoPlayer渲染机制,Mask就无法再配合VideoPlayer了。不过可以使用另外的方法去结合Mask组件实现,示例同上参照Cocos实例2:实现VideoPlayer奥利奥夹心饼干

Q8:静音后,VideoPlayer播放仍有声音

  • VideoPlayer 组件有自己的音频控制选项,如果没有正确配置或者适配全局静音开关,则即使全局静音,其所包含的音频轨道仍会播放。如果有需要,可以在静音逻辑里实现对VideoPlayer音频的控制。

Q9:为什么在手机端无法播放

  • 检查是否有视频加载监听事件,注意监听META_LOADED,而不是READY_TO_PLAY
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值