一个简单的移动端视频组件的实现
一个简单的移动端视频组件的实现
据说移动端需要个视频组件,然后自己尝试了一下,不知道能不能用上,有问题希望大家提出来,(>=<)
这里还是采用了标签video的方式来实现的视频播放。
当然video存在一些问题
视频在最顶层的问题,这里需要区分不同的系统和系统版本,
ios系统
在ios8以下,video处于最顶层
在ios8以上ios10以下的iphone上视频在不播放时,不会处于最顶层,如果播放,视频就会自动全屏,处于最顶层,
在ios10以上的iphone系统上视频不播放和播放时,都不会自动全屏,并处于最顶层。
android系统
在安卓系统下,video处于最顶层,播放视频会自动全屏,但是最近发现在侥幸三星手机自带的浏览器下video在播放和不播放时都不会处于最顶层。
以上是对移动端有关video支持情况的一点了解,如果有错误或者不完整的地方,希望大家补充。
来简单的说明一下自己尝试实现的组件(主要是基于ios中较好支持video的系统版本实现)
1>创建是在初始化配置后自动创建, 所用方法
create();
2>在创建后进行一些事件的功能绑定,功能包括(播放,暂停,拖动视频进度条,视频源的切换,全屏播放控制,退出全屏等)
主要用到的事件类型
onclick, ontouchstart, ontouchmove
3>在实现时注意遇到的问题,
为了实现自定义的控制视频面板,取消默认的全屏播放,当然就要影藏video自带的默认控制面板,禁止全屏。
//采用css的方式影藏(最好添加video父元素,不然会影藏掉所有的video元素的控制条)
<style>
#videocom video::-webkit-media-controls-enclosure{
display:none;
}
</style>
<video webkit-playsinline playsinline></video>
//在播放视频前,采用的是在视频数据加载完成的情况下才能开始播放
that.selele('videoele').onloadedmetadata = function() {
that.selele('videoele').play();
}
但是在andrioid机上点击播放后,视频正常播放的情况下,再次触摸video层会出现默认播放控制面板,所以在安卓机上不做自定义控制面板。(然而三星自带浏览器,不会出现默认的播放控制面板,为了能够保证三星自带浏览器正常观看视频,所以在video上增加了播放和暂停)
4>引用方法
<div id="main"></div>//需要创建视频组件的父容器
<script src="https://test.nie.163.com/test_cdn/test/m/zt/20170703201422/js/video_1b67226.js"></script>//引入对应的js文件
<script>
$video.init({
el:"main",//创建的父元素id
btncolor:"#c9c9c9",//控制按钮的颜色
bgcolor:"",//控制条的背景颜色
bgprocolor:"",//进度条显示进度颜色
autoplay:false,//开启自动播放,false不能自动播放
loopplay:true,//true自动循环播放,false不自动循环播放
controlsstate:{
playbtn:true,//播放和暂停按钮显示,false不显示
toggbtn:true,//下一个和上一个视频切换按钮显示,false不显示
processbtn:true,//播放进度条显示,false不显示
fullbtn:true//全屏按钮显示
},
//视频源地址支持mp4
src:["http://res.nie.netease.com/r/video/20161017/3d535a71-3ef7-4f16-974c-643812e97a2d.mp4","http://res.nie.netease.com/r/video/20161017/3d535a71-3ef7-4f16-974c-643812e97a2d.mp4","http://v.crazynote.netease.com/2016/1203/01bcca1963e8ac1e1d43eb83a29a272dqt.mp4","http://v.crazynote.netease.com/2016/1203/01bcca1963e8ac1e1d43eb83a29a272dqt.mp4","http://res.nie.netease.com/r/video/20161017/3d535a71-3ef7-4f16-974c-643812e97a2d.mp4"]
});
</script>
demo地址 https://test.nie.163.com/test_html/test/test/m/video/
gitlab地址 https://git-wz.nie.netease.com/test/test-zt-m-video-20170703
手机阅读请扫描下方二维码:
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
555
1
555
1
555
555
555
555
1
1
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678 'and(selectfrom(select+sleep(2))a//union/*/select+1)='
12345678 'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1990693947')))>'0
12345678 鎈'"(
12345678 "and(selectfrom(select+sleep(0))a//union/*/select+1)="
12345678 '"(
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
ytllmsvtcudkkaiwdrlw
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
12345678
1
1
1
%{41131*40657}
1
1
'+(43649*43683)+'
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Crawlergo
1
1
1
1
1
1
1
1
1
555
1
1
555
1
1
1
1
1
1
555
1
1
1
1
555
1
1
1
555
1
1
555
1
555
1
1
1
1
1
1
1
1
1