ios中视频的最后一桢问题解决


Posted in Javascript onMay 14, 2019

问题描述

在ios系统下的safari、wechat、以及其他浏览器,在播放部分m3u8的时候,最后一桢的画面会被系统移出,也就是视觉效果在视频播放结束的时候会黑屏,并不是全部的视频都会这样,目前发现最后片段时时长小于.5的最后的画面会被系统移出,未找到相关的文档描述,目前针对该场景做了个polyfill

ios中视频的最后一桢问题解决

方案

将视频的最后一桢作为视频的背景图片,这样在视频播放结束画面被移走时就会展示背景图片,反之有视频画面的时候背景就会被覆盖。

具体实现

1、获取视频的最后一桢图片

a.技术能力:在前端中可以通过canvas对video进行绘图截取video的当前画面。
b.问题:但是无法做到截取video任一桢的功能,只能时视频播放哪里截取到哪里,相当于对视频进行截图。
c.探索:监听video的ended事件,但是当ended发生时,画面已经被系统移出了。
d.解决:监听video的timeupdate事件,当currentTime距duration小于1s的时候,开始截取当前的视频桢,这样在ended之前的画面就是视频的最后一桢。

2、将获取的视频最后一桢图片替换为video的背景图片

视频截取图片

function video2Base64 (video: HTMLVideoElement) {

 let dataURL = '',
  canvas = document.createElement("canvas");

  if (video.videoWidth !== 0) {
   canvas.width = video.videoWidth;
   canvas.height = video.videoHeight;

   (canvas.getContext("2d") as CanvasDrawImage).drawImage(video, 0, 0, canvas.width, canvas.height); //绘制canvas
   dataURL = canvas.toDataURL('image/jpeg'); //转换为base64
   // 将截取的视频图片设置为视频的背景
   video.setAttribute("style", `background-image: url(${dataURL}); background-size: contain; background-position: center;background-repeat: no-repeat;`);
  }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
Javascript毫秒数用法实例
Feb 05 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
理解javascript正则表达式
Mar 08 Javascript
详解Angular2 关于*ngFor 嵌套循环
May 22 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 #Javascript
vue项目中引入vue-datepicker插件的详解
May 14 #Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
May 14 #jQuery
JavaScript中this的全面解析及常见实例
May 14 #Javascript
jquery 验证用户名是否重复代码实例
May 14 #jQuery
记录vue项目中遇到的一点小问题
May 14 #Javascript
javascript中如何判断类型汇总
May 14 #Javascript
You might like
javascript生成随机颜色示例代码
2014/05/05 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
实现vuex原理的示例
2020/10/21 Javascript
Python yield 小结和实例
2014/04/25 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Python之re操作方法(详解)
2017/06/14 Python
彻底搞懂Python字符编码
2018/01/23 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
商务英语专业应届毕业生求职信
2013/10/28 职场文书
师范类求职信
2014/06/21 职场文书
开会通知短信大全
2015/04/20 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
《植树问题》教学反思
2016/03/03 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL