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原型链示例分享
Jan 26 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
JavaScript获取指定元素位置的方法
Apr 08 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
Nov 22 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
ES6中异步对象Promise用法详解
Jul 31 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php xml文件操作代码(一)
2009/03/20 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python实现超级马里奥
2020/03/18 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
应届生.NET方向面试题
2015/05/23 面试题
P/Invoke是什么
2015/07/31 面试题
房地产项目策划书
2014/02/05 职场文书
银行优秀员工事迹
2014/02/06 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
身份证丢失证明
2015/06/19 职场文书
国富论读书笔记
2015/06/26 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书