百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> html5video挪移打量解-
分享文章到:

html5video挪移打量解-

发布时间:08/01 来源:未知 浏览: 关键词:
本文主要介绍了浅谈html5video挪移端填坑记,小编觉得挺不错的,此刻分享给大家,也给大家做个参照 。一起追随小编过来看看吧,但愿能帮忙到大家。 本文主要介绍了浅谈html5 video 挪移端填坑记,小编觉得挺不错的,此刻分享给大家,也给大家做个参照 。一起追随小编过来看看吧,但愿能帮忙到大家。

本文介绍了html5 video 挪移端填坑记,分享给大家,概括如下:


主动播放

设定autoplay属性

挪移阅读器中

但是在许多挪移阅读器里,都是请求会员的真实操纵来(touchend、click、doubleclick 或 keydown 事件等规范的事件)触发调取video.play(),才干主动播放影音视频。

 dom.addEventListener('click', function () {
   video.play()
})

微信中

也可以在 wx.ready()里触发video.play()

wx.ready(function () {
  video.play()
})

内联播放

设定属性 webkit-playsinline playsinline

在iOS Safari和一些安卓的一些阅读器下播放视频的时候,不克不及在h5页面中播放视频,系统会主动接管视频

要是需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline,在iOS10今后,需要加上playsinline,倡议同时加上这两个属性。同时还需要app支撑这种模式

webview.allowsInlineMediaPlayback = YES;

ios手Q和微信都支撑这种模式,但是android 微信就挂了

android 微信

android微信内置阅读器采纳腾讯X5内核,不遵循X5web规范,video强迫全屏就是其一。视频播放结束后还会涌现QQ本人的视频举荐

听说,其有个白名单,白名单下的视频资源,就不会全屏。但是腾讯已经不克不及再添加白名单了。尿性,无解。。。。。。

当前还有一个解决方法,就是运用h5 canvas 播放 video

canvas 播放视频

运用canvas 碰到的坑:video 必需加 x5-video-player-type="h5" 属性,不然,在挪移端就会卡死不克不及播放视频,个人以为是由于视频被接管的缘由致使。

《script》 var video = document.querySelector('#video') var canvas = document.querySelector('#canvas') var wrapper = canvas.parentNode var width = wrapper.offsetWidth var height = wrapper.offsetHeight var ctx = c.getContext('2d') var time = null canvas.width = width canvas.height = height canvas.addEventListener('click', function () { video.play() }) video.addEventListener('play', function () { time = window.setInterval(function () { ctx.drawImage(v, 0, 0, width, height); }, 20); }, false); video.addEventListener('pause', function () { window.clearInterval(time); }, false); video.addEventListener('ended', function () { window.clearInterval(time); }, false); 《script》

最后发明,虽然运用canvas播放视频,android微信中可以屏蔽全屏视频播放完的举荐视频。但是还没方法制止视频播放时 的全屏题目。还是得万恶的白名单。吐槽。。。。。。。。。。。。。。。。
更坑爹的是没有寻到js触发退出全屏的办法。

ios黑屏题目

ios 在播放视频时,会涌现短暂的黑屏,然后正常显示。

解决办法:

在视频上层遮盖一个 增加一个p并用一张图片添补,创造播放前加载假象。然后监听事件 timeupdate ,视频播放有画面时移除这个“p块”

video.addEventListener('timeupdate', function(){
  if(video.currentTime > 0.1){
      posterImg.hidden();
  }
})

Media 办法和属性

HTMLVideoElement和HTMLAudioElement 均继承自HTMLMediaElement

// 媒体差错
MediaObj.error; //null:正常
MediaObj.error.code; //1.会员终止 2.网络差错 3.解码差错 4.URL无效

//媒体目前状态
MediaObj.currentSrc; //返回目前资源的URL
MediaObj.src = value; //返回或设定目前资源的URL
MediaObj.canPlayType(type); //可否能播放某种格局的资源
MediaObj.networkState; //0.此元素未初始化 1.正常但没有运用网络 2.正鄙人载数据 3.没有寻到资源
MediaObj.load(); //从新加载src指定的资源
MediaObj.buffered; //返回已缓冲区域,TimeRanges
MediaObj.preload; //none:不预载 metadata:预载资源信息 auto:

//预备状态
MediaObj.readyState;//1:HAVE_NOTHING 
                    //2:HAVE_METADATA 
                   //3.HAVE_CURRENT_DATA 
                  //4.HAVE_FUTURE_DATA 
                 //5.HAVE_ENOUGH_DATA
MediaObj.seeking; //可否正在seeking

//回放状态
MediaObj.currentTime = value; //目前播放的位置,赋值可转变位置
MediaObj.startTime; //个别为0,要是为流媒体或者不从0开端的资源,则不为0
MediaObj.duration; //目前资源长度 流返回无穷
MediaObj.paused; //可否暂停
MediaObj.defaultPlaybackRate = value;//默许的回放速度,可以设定
MediaObj.playbackRate = value;//目前播放速度,设定后即将转变
MediaObj.played; //返回已经播放的区域,TimeRanges,对于此对象见下文
MediaObj.seekable; //返回可以seek的区域 TimeRanges
MediaObj.ended; //可否完毕
MediaObj.autoPlay; //可否主动播放
MediaObj.loop; //可否轮回播放
MediaObj.play(); //播放
MediaObj.pause(); //暂停

//视频控制
MediaObj.controls;//可否有默许控制条
MediaObj.volume = value; //音量
MediaObj.muted = value; //静音

//TimeRanges(区域)对象
TimeRanges.length; //区域段数
TimeRanges.start(index) //第index段区域的开端位置
TimeRanges.end(index) //第index段区域的完毕位置

//【★★★**相干事件**★★★】
//事件分发
var eventTester = function(e){
    Media.addEventListener(e,function(){
        console.log((new Date()).getTime(),e)
    },false);
}
//事件监听
eventTester("loadstart"); //客户端开端要求数据
eventTester("progress"); //客户端正在要求数据
eventTester("suspend"); //推迟下载
eventTester("abort"); //客户端自动终止下载(不是由于差错引起)
eventTester("loadstart"); //客户端开端要求数据
eventTester("progress"); //客户端正在要求数据
eventTester("suspend"); //推迟下载
eventTester("abort"); //客户端自动终止下载(不是由于差错引起),
eventTester("error"); //要求数据时碰到差错
eventTester("stalled"); //网速失速
eventTester("play"); //play()和autoplay开端播放时触发
eventTester("pause"); //pause()触发
eventTester("loadedmetadata"); //成功猎取资源长度
eventTester("loadeddata"); //
eventTester("waiting"); //期待数据,并非差错
eventTester("playing"); //开端回放
eventTester("canplay"); //可以播放,但半途可能由于加载而暂停
eventTester("canplaythrough"); //可以播放,歌曲全部加载结束
eventTester("seeking"); //寻觅中
eventTester("seeked"); //寻觅结束
eventTester("timeupdate"); //播放工夫转变
eventTester("ended"); //播放完毕
eventTester("ratechange"); //播放速率转变
eventTester("durationchange"); //资源长度转变
eventTester("volumechange"); //音量转变

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板