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. Linux内核project导论——前言

    想要研究linux内核.使用linux内核,首先要知道linux内核能做到什么,提供了什么.我看过非常多刚開始学习的人一进入公司就開始使用linux内核开发内核模块.使用的不管是通信方式.内存接口还是 ...

  2. zoj 1880 - Tug of War

    题目:有n个人分成两组,两组人数差不能超过1,找到两组的人重量之差的最小值. 分析:dp,二维01背包. 由于必须放在两个组中的一组,直接背包全部可到状态, 取出相差不超过 1的最接近 sum/2的值 ...

  3. HDU1813:Escape from Tetris(IDA)

    Problem Description 因为整日整夜地对着这个棋盘,Lele最终走火入魔.每天一睡觉.他就会梦到自己会被人被扔进一个棋盘中,一直找不到出路,然后从梦中惊醒.久而久之,Lele被搞得精神 ...

  4. The return type is incompatible with JspSourceDependent.getDependants():JasperException问题分析与解决方法

    Linux下基于JSP的报表集成到项目中后,显示不出来,查看tomcat的日志.有例如以下报错信息: The return type is incompatible with JspSourceDep ...

  5. C#之快速排序

    算法描述 1.假定数组首位元素为“枢轴”,设定数列首位(begin)与末位(end)索引: 2.由末位索引对应元素与“枢轴”进行比较,如果末位索引对应元素大于“枢轴”元素,对末位索引减一(end--) ...

  6. Sparql语言模型(一)

    在进行RDF数据查询或描写叙述的时候.Sparql不管从出身.标准抑或操作习惯上都是一个不错的选择.然而对于一个刚開始学习的人来说多多少少有些"禁忌"的意味,操作起来也有点畏首畏尾 ...

  7. Hadoop Yarn(一)—— 单机伪分布式环境安装

    HamaWhite(QQ:530422429)原创作品,转载请注明出处:http://write.blog.csdn.net/postedit/40556267. 本文是依据Hadoop官网安装教程写 ...

  8. LeetCode总结--二分查找篇

    二分查找算法尽管简单,但面试中也比較常见.经经常使用来在有序的数列查找某个特定的位置.在LeetCode用到此算法的主要题目有: Search Insert Position Search for a ...

  9. shell 字符串拼接 获取自身文件名 日志记录

    shell  字符串拼接 获取自身文件名 日志记录 [root@hadoop2 xiaole_chk_url]# sh a.sh123.loga.sh[root@hadoop2 xiaole_chk_ ...

  10. 水晶报表的宽度调整方法(设计器、代码调整、rpt文件属性)

    水晶报表的宽度调整方法(设计器.代码调整.rpt文件属性) Posted on 2010-08-07 23:52 moss_tan_jun 阅读(1725) 评论(0) 编辑 收藏 经过个人反复研究后 ...