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. SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0 解决方案

    远程服务器的操作系统:Ubuntu 本地:navicat +win10 连接名:随意填写 主机名:localhost 端口:3306 用户名:连接电脑的数据库的用户名 密码:连接电脑的数据库的密码 主 ...

  2. MySQL: 让MySQL支持颜文字emoji

    数据库需要支持utf8mb4,如果已经创建了,那么可以用如下命令转换: alter database xxxx character set utf8mb4 collate utf8mb4_unicod ...

  3. 苹果iPhone连接wifi就进去www.apple.com主页 下边显示 &lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Success&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;Success&lt;/BODY&gt;

    苹果iPhone连接wifi就进去www.apple.com主页  下边显示 <HTML><HEAD><TITLE>Success</TITLE>< ...

  4. 模式匹配-BF算法

    /***字符串匹配算法***/ #include<cstring> #include<iostream> using namespace std; #define OK 1 # ...

  5. word2vec 中的数学原理具体解释(六)若干源代码细节

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas M ...

  6. HDU 5858Hard problem

    Hard problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  7. Codeforces Beta Round #67 (Div. 2)C. Modified GCD

    C. Modified GCD time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  8. EditText 光标的颜色

    EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的   android:textCursorDrawable="@null&quo ...

  9. 【POI 2010】 Antisymmetry

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2084 [算法] manacher [代码] #include<bits/std ...

  10. oracle更新大量数据太慢,可以通过游标实现的例子

    declare cursor city_cur isselect t.new_customer_id,t.old_customer_id from citsonline.crm_customer_tm ...