本周完成了新项目两个issue,由于是前台使用的是angularjs,而不是以往的angular,文件结构也不太相同。所以出现着:angularjs不熟悉,代码无从下手的情况。 在经过摸索之后,对于a
顺晟科技
2021-09-07 12:17:54
30
@(video)[h5|vue]
因项目需求需要,需要播放小视频,因此选择h5中的video,但技术框架选择的是vue,因此,简单的了解学习了一下,随记一下,如有不到之处,请不吝修正。
下面摘录一些api的方法属性
次使用h5的video,查看了h5的api,是不是觉得so easy,but别高兴的太早,当时自己随便找了一个mp4格式的视频,赋值给video
的src
标签,但是在页面上跑的时候,突然发现只有音频,没有视频展示,在百思不得jie
的情况下,只好乖乖的度娘,知乎
ok,原来是格式有特殊要求,那就有方案了,寻找h265转码工作,奈何按照了,却不知怎么使用,就乖乖的重新找一个视频了,提供一个在线的视频(此视频来源于网络资源,如果不能正常使用,请自行重找)
按照api中指示,video标签的autoplay
属性设置成autoplay
就可以自动播放,感觉是不是很简单,有没有,vue中v-bind
一下不就ok了,有没有很高兴,然而并不是这样子,不是这样子,不是这样子【当然或许是我的姿势不对吧】
原来的代码如下:
<template>
<div>
<video id="myvideo" :src="videoSrc" :poster="videoImg" :muted="muteStatus" :autoplay="playStatus" height="414" width="720">
your browser does not support the video tag
</video>
<span class="ico ico-sound" :class="{ active: isMute }" v-on:click="closeSoundClick()"></span>
<span class="ico ico-skip"></span>
<span class="ico ico-video" :class="{ hide: isPlay }" v-on:click="playClick()"></span>
</div>
</template>
data(){
return {
_dom:"",
videoSrc:\'http://babylife.qiniudn.com/FtRVyPQHHocjVYjeJSrcwDkApTLQ\',
videoImg:\'/uploads/image/20210907/5996999fa093c04d4b4dbaf1_162.jpg\',
playStatus:\'\',
muteStatus:\'\',
isMute:true,
isPlay:false
}
},
methods:{
playClick(){
this.isPlay = !this.isPlay;
this.playStatus= \'autoplay\';
},
closeSoundClick(){
this.isMute = !this.isMute;
if(this.isMute){
this.muteStatus = \'\';
}else{
this.muteStatus = \'muted\';
}
}
}
心理一度怀疑自己是不是哪里出现了问题,但是就是没有找到问题在哪里,最后,感觉还是重新找路子吧,咱们来找找h5中video
自带的一些方法吧
js怎么判断h5 video是否点击了播放按钮
HTML5 video 元素及获取视频播放事件
ok,我们可以看到video.play()
可以让video开始播放,那就这么干吧,修改上述的playClick事件
playClick(){
this._dom = document.getElementById(\'myvideo\');
this.isPlay = !this.isPlay;
this._dom.play();
},
ok,视频就可以通过点击,然后开始播放了
其实这个,基本已经实现了,但是本人还是有点迷惑,按照官方api
的指示,在vue中通过控制属性,就可以了,但是autoplay怎么就不行呢,真是脑壳疼,知道的小主,请留言解释一下,谢谢
我们刚才看到video
的一个属性paused
可以判断当前视频是否处于播放中状态,那么,播放完毕,也是可以通过paused
属性来判断的,带着这个思路,亲测是ok的,那么这个判断是否已经播放完毕,感觉就不那么困难了,我们只需要一个定时器即可,代码如下:
showOtherVideo(){
let _this = this;
setTimeout(function(){
_this.flag = _this._dom.paused;
if(!_this.flag){
_this.showOtherVideo();
console.log(_this.flag);
}
},1000)
}
只要思路不滑坡,办法总比问题多
17
2022-11
09
2022-11
09
2022-11
09
2022-11
09
2022-11
09
2022-11