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 相关文章推荐
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
Nov 23 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
May 19 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
ES6中Math对象新增的方法实例详解
Apr 25 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
详解如何在JS代码中消灭for循环
Dec 11 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
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Python中encode()方法的使用简介
2015/05/18 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
Python列表操作方法详解
2020/02/09 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
Python通过Pillow实现图片对比
2020/04/29 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
协商一致解除劳动合同协议书
2014/09/14 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript