html5的video标签不能播放的解决办法:1、使用视频截图做一个播放按钮,占位视频原有位置;2、监听占位按钮的click事件,使用“video.play()”;3、把占位图和loading隐藏即可。
本教程操作环境:Windows10系统、HTML5版、DELL G3电脑
html5的video标签不能播放怎么办?
IOS-HTML5-Video标签不能播放
h5的video标签 在UIwebview中无法播放,Safari可以,
立即学习“前端免费学习笔记(深入)”;
某些手机可以某些手机不行
和video.js实现一致,不嫌弃再引一个兼容包,想有更好体验的
建议使用https://videojs.com/
想自己体验一把原理,可以在文章最后拷贝demo代码运行
传统的方法在HTML中写video标签就可以点击播放啦
// ?vframe/jpg/offset/5 这个是七牛接口,取截图用的,5就是第5秒截图
登录后复制
BUT,这么写在IOS 10.3.2/3 11.x.x. iphone 6/6p 7等等几个测试机中就不行,但是在个人手机上又可以,有的手机可以有的手机不行。
修改后:
步骤1:使用视频截图再做一个播放按钮,占位视频原有位置
步骤2: 监听占位按钮的click事件,使用video.play(),就可以看到视频有请求在加载了
步骤3: 在加载中的视频都有一个promise可以拿到,then以后把占位图和loading隐藏就可以了
tips:
不同手机/系统会有不同的请求范围,一般都是分割成3-5个206请求。
console.time(“加载毫秒”);可以看到加载时间,基本和Charles抓包看到的一致。
不同手机/系统也会有不同的then表现有的是一点就给返回,有的是需要等视频全部加载完才返回
视频DOM的属性可以拿到当前加载了多少,总量是多少,除一下就是百分比,具体属性可以看 > https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/video
线上地址:http://m.soyoung.com/item/detail?type=0&sys=3&item_id=263&cityId=0
demo代码(方便有些朋友,私信想直接拿走demo啦~)
nbsp;html>视频DEMO html,body,video{ margin: 0; padding: 0; } .pub-swipe .media { position: relative; font-size: 0; margin-bottom: 0.4rem; } .pub-swipe .media img, .pub-swipe .media video { display: block; margin: 0 auto; width: 100%; min-height: 4.667rem; } .pub-swipe .desc, .pub-swipe .media img { margin-bottom: 0.267rem; } .pub-swipe .media video { width: 100%; height: 4.667rem; } .pub-swipe .media img.video-go { width: 2.707rem; height: 2.707rem; min-height: 0; position: absolute; left: 50%; margin-left: -.853rem; top: 1.3rem; z-index: 5; } .hide { display: none !important; } /** * 视频加载兼容处理 */ var isIPhone = window.navigator.appVersion.match(/iphone/gi); var creat_video = function () { var _video = document.getElementsByClassName('video-i'); if (_video.length > 0) { for (var i = 0; i 0) { _dom = _video[0]; // if (_dom.ended) { if (isIPhone) { //修改Ios11状态不准,视频无法播放的问题 if (_dom.src.indexOf('random') > -1) { _dom.src = _dom.src.split('random=')[0] + 'random=' + _dom.src.split('random=')[1] + 1; } else { _dom.src = _dom.src + '?random=' + Math.floor(Math.random() * (100 - 10 + 1) + 10); } } _noSound[0].classList.remove('hide'); _dom.play(); _this.classList.add('hide'); _dom.classList.remove('hide'); // } } return; } _this.setAttribute('data-video', '1'); _process.setAttribute('class', 'vjs-process'); _process.innerHTML = '加载中...'; _loading.setAttribute('class', 'vjs-loading-spinner'); _dom.setAttribute('src', _videoUrl); _dom.setAttribute('controls', 'controls'); _dom.setAttribute('autoPlay', 'false'); // _dom.setAttribute('x5-video-player-type', 'h5'); _this.parentNode.appendChild(_loading); _this.parentNode.appendChild(_process); _this.parentNode.classList.add('vjs-waiting'); _noSound.setAttribute('class', 'no-sound'); _noSound.innerHTML = '无声'; // _dom.setAttribute('webkit-playsinline', 'webkit-playsinline'); // _dom.setAttribute('playsinline', 'playsinline'); _dom.setAttribute('poster', _img); _p = _dom.play(); console.time("加载毫秒"); var _dom_buffered_promise = function () { var _end = _dom.buffered.end(0); var _duration = _dom.duration; var _a = Math.round(_end / _duration * 100); _process.innerHTML = _a + '%'; console.log(_end + ' ' + _duration) if (_a < 10) { setTimeout(_dom_buffered, 200); } else { _dom_buffered(); } }; var _dom_buffered = function () { _this.parentNode.classList.remove('vjs-waiting'); _this.classList.add('hide'); _process.classList.add('hide'); _this.parentNode.appendChild(_dom); _this.parentNode.appendChild(_noSound); _dom.addEventListener('ended', function () { _dom.classList.add('hide'); _this.classList.remove('hide'); _noSound.classList.add('hide'); }); _dom.currentTime = 0; console.timeEnd("加载毫秒"); }; if (_p instanceof Promise) { _p.catch(function (error) { console.log(error.message); if (error.name === 'NotAllowedError') { _autoPlayAllowed = false; } }).then(function (e) { if (_autoPlayAllowed) { _dom_buffered_promise(); } }); } else { //ios8-9拿不到promise需要给个延时处理 setTimeout(function () { _dom_buffered(); }, 4000); } }); } } }; new creat_video();
登录后复制
推荐学习:《HTML5视频教程》
以上就是html5的video标签不能播放怎么办的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2921506.html