1.video是原生组件
原生组件的层级是最高的,想要覆盖在video上,只能用cover-view 和 cover-image 组件,这2个可以无限嵌套。适用场景:给视频加标题:

2.检测video播放进度用bindtimeupdate:

这个是微信返回当前播放进度的接口。文档上说是每250ms调用一次,实际测试在ios上1s调用一次。
通过e.detail.currentTime可以拿到当前进度,单位:s。
关于这个问题,参见我的另一篇博客:https://www.cnblogs.com/xiaochongchong/p/9455083.html

这里提个问题,给你一段视频,给一组音频信息,音频信息里包含开始时间,音频的src。让你根据视频播放的进度播放音频,你会怎么做?
这是其实是配音场景,把视频和音频给同步起来。如果能固定250ms调用一次,这个问题就不大,但事实上,微信在各种系统上的实现方式有差异,并不保证250ms播放一次。
首先我们排除,在视频一开始就setTimeout到每个音频的这种方式,因为视频在播放的过程可能会缓冲,但setTimeout会依照设定的执行。
这个问题最好的解决方式,在bindtimeupdate里找到距离给定播放音频的当前视频时间,然后再setTimeout,这样即使视频缓存,播放时间最大的误差也不会超过bindtimeupdate调用的频率。
video暂停的时候还要清除setTimeout。部分代码:

bindPlayFunc:function(e){
console.log(111);
// bgM.obeyMuteSwitch = false;
let palyTime = new Date().getTime();
if(curMp3){
console.log('seek:'+currentTime);
curMp3.seek(currentTime);
curMp3.play();
}
// if(!bgM.isPlayed){ // }else{ // }
},
timeUpdate:function(e){
// if(bgM.paused){
// bgM.seek(e.detail.currentTime);
// bgM.play();
// }
this.data.dub.dub_json.forEach((arr,index)=>{
//微信真机上播放完之后,第二遍播放获取不到duration
if(!mp3Arr[index].dur && mp3Arr[index].duration){
mp3Arr[index].dur = mp3Arr[index].duration;
}
const interval = 1000; if(mp3Arr[index] && mp3Arr[index].paused && arr.time - e.detail.currentTime*1000<=interval && arr.time>=e.detail.currentTime*1000){
console.log('index:'+index);
if(TimeTaskArr[index]){
console.log('删除定时:'+index);
clearTimeout(TimeTaskArr[index]);
} TimeTaskArr[index] = setTimeout(()=>{
mp3Arr.forEach((mp3)=>{
mp3.pause();
})
console.log('定时播放:'+index);
console.log('播放url:' + mp3Arr[index].src);
mp3Arr[index].play();
},arr.time - e.detail.currentTime*1000);
}
})

  

3.video组件可以通过wx.createVideoContext控制
我们想在js里控制video的播放暂停等,必须用wx.createVideoContext这个接口。如果你的video只是播放,不需要操作其他的,那这个接口用不上。
以video组件的id为参数可以构造一个VideoContext 对象,VideoContext 对象有一系列控制微信播放的方法:paly(),stop(),seek()...

4.seek()方法
VideoContext.seek(position) 跳转到指定位置,position的单位是秒,这个精度很低了,我自己传的是毫秒转换过来的,可以带有小数。比如:
VideoContext.seek(1.3) //调到视频1.3s的位置
这个跳转在最新的安卓系统上有问题,表现为 调用这个方法后,视频播放的位置在指定的前面。官方论坛也有讨论:https://developers.weixin.qq.com/community/develop/doc/00044e95ab0000a43476eae6556c00?highLine=%25E5%25AE%2589%25E5%258D%2593seek

5.获取视频的长度
video的duration属性,立马获取会有问题,参见我的博客:
https://www.cnblogs.com/xiaochongchong/p/9455293.html

微信小程序video的更多相关文章

  1. 微信小程序——video使用总结

    关于小程序video的一些基本使用方法,可点击这里稍作了解. 需求: 1.默认显示封面: 2.一个视频播放的时候,其他视频停止播放,并显示封面. 解决问题思路: 1.通过wx:if判断当前视频是否是播 ...

  2. 微信小程序 - video组件poster无效 / 视频播放列表

    在做有关微信小程序有关视频播放页面的时候,遇到video组件设置poster无效果,然后查了下poster属性:视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 pos ...

  3. 如何使用微信小程序video组件播放视频

    相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...

  4. 微信小程序video组件出现无法播放或卡顿

    微信小程序使用video组件播放视频的时候,会出现卡顿或者无法播放的问题,加一个custom-cache=”true“即可解决,这个属性文档上没有,是从小程序开发社区中get到的.

  5. 微信小程序 video组件 不随页面滚动

    1.页面初始化(滚动前)时,video所在位置 2.页面滚动后,video视频组件所在位置 看了别人家的小程序并不会出现这种状况.最后检查发现,是页面包裹层设置了 height:100% 导致的 顺便 ...

  6. 微信小程序-video详解

    在小程序火热的今天,作为IT行业的一员,我也来凑了一下热闹,话不多说了,接下来看看视频上传,和跨页面获取值的相关案例吧!! 视频上传部分代码: 视频播放 随机颜色的产生: 颜色页面的选择:

  7. 微信小程序 video组件----真机测试position:fixed无效 且有黑底

    1.问题描述 video组件fixed后,视频随页面滚动,且有个黑色底停留在页面. 页面滚动前 滚动后 这里贴一下修改前代码,在微信开发者工具看是没有任何问题的.在手机端测试就有以上的问题 <v ...

  8. 第七篇、微信小程序-video组件

    主要属性: 效果图: ml: <View>1.播放网络视频</View> <view > <video style="width: 100%;hei ...

  9. 解决微信小程序video属性controls失效问题

    <view class="VideoBox"> <video class='myVideo' id="myVideo01" src=" ...

随机推荐

  1. RAC 设置archive log模式

    首先设置 archive log的位置 SQL> alter system set log_archive_dest='+DATA/orcl/archive/'; System altered. ...

  2. RAC fail over 测试

    oracle rac 11gr2中提供了多种 failover方式,这里只测试 server side TAF. 也就是说在server端配置的failover.这种配置方式的好处就是,如果有什么改动 ...

  3. 1.求整数最大的连续0的个数 BinaryGap Find longest sequence of zeros in binary representation of an integer.

    求整数最大的连续0的个数 A binary gap within a positive integer N is any maximal sequence of consecutive zeros t ...

  4. UVa 10315 - Poker Hands

    题目:两个人手里各有五张牌,比較两牌型大小. 比較规则例如以下:(按优先级排序,优先级同样按以下内部规则比較) 1.straight-flush:同花顺,牌面连续,花色同样,按最大的值比較. 2.fo ...

  5. [容斥原理] hdu 1796 How many integers can you find

    题意: 给一个N.然后给M个数,问1~N-1里面有多少个数能被这M个数中一个或多个数整除. 思路: 首先要N-- 然后对于每一个数M 事实上1~N-1内能被其整除的 就是有(N-1)/M[i]个 可是 ...

  6. Ajax异步方式实现登录与參数的校验

    登录代码 这个是使用Bootstrap3的组件功能实现的 <div class="login_con_R"> <h4>登录</h4> <F ...

  7. ZOJ2599:Graduated Lexicographical Ordering(很经典的数位DP)

    Consider integer numbers from 1 to n. Let us call the sum of digits of an integer number its weight. ...

  8. Java原型模式之浅拷贝-深拷贝

    一.是什么? 浅拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量仅仅复制引用,不复制引用的对象 深拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制 内部机制: ...

  9. TTS-零基础入门-10分钟教你做一个语音功能

    在本片博客正式開始之前,大家先跟我做一个简单的好玩的 小语音. 新建一个文本文档,然后再文档里输入这样 一句话  CreateObject("SAPI.SpVoice").Spea ...

  10. P2657 [SCOI2009]windy数 数位dp

    数位dp之前完全没接触过,所以NOIP之前搞一下.数位dp就是一种dp,emm……用来求解区间[L,R]内满足某个性质的数的个数,且这个性质与数的大小无关. 在这道题中,dp[i][j]代表考虑了i位 ...