移动端video视频播放的问题案例总结
下面给大家看几个案列,都是一些问题案列和总结,值得大家参考和研究,因为我用canvas绘制了video,发现效果和直接用video一样。因此还是用了原来video的方式
<div class="commondw videoimg" id="videoimg"></div><video class="vido" id="vidoid" poster="images/photo/video.jpg"> <source src="media/move.mp4" type="video/mp4"></video>$("#videoimg").on("click", function () { $(this).fadeOut(1000); $(".clicktips").hide(); $("#vidoid").show(); $("#vidoid")[0].play(); $("#vidoid").bind('ended', function () { $("#vidoid").hide(); $("#videoimg").show(); }) });
但是浏览器中还是没有问题的,和canvas绘制一样!点击体验原生video版障眼法视频
失败案例二(canvas渲染video)
后来我想到用canvas渲染video,也就是通过canvas的drawImage方式,结合requestAnimationFrame动画,requestAnimationFrame动画我之前制作婚礼邀请函总结的时候也介绍过。
下面贴出代码
function VideoToCanvas(videoElement,fn) { if (!videoElement) { return; } var fn=fn||""; var canvas = document.createElement('canvas'); canvas.width = videoElement.offsetWidth; canvas.height = videoElement.offsetHeight; var ctx = canvas.getContext('2d'); var newVideo = videoElement.cloneNode(false); var timer = null; var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame; function drawCanvas() { ctx.drawImage(newVideo, 0, 0, canvas.width, canvas.height); timer = requestAnimationFrame(drawCanvas); } function stopDrawing() { cancelAnimationFrame(timer); } function endedCallBack(){ cancelAnimationFrame(timer); fn && fn() } newVideo.addEventListener('play', function () { drawCanvas(); }, false); newVideo.addEventListener('pause', stopDrawing, false); newVideo.addEventListener('ended', endedCallBack, false); videoElement.parentNode.replaceChild(canvas, videoElement); this.play = function () { newVideo.play(); }; this.pause = function () { newVideo.pause(); }; this.playPause = function () { if (newVideo.paused) { this.play(); } else { this.pause(); } }; this.change = function (src) { if (!src) { return; } newVideo.src = src; }; this.drawFrame = drawCanvas; this.show = function () { canvas.style.display = "block"; } this.hide = function () { canvas.style.display = "none"; } }
封装了显示show()、隐藏hide()、播放play()、暂停pause()、更换地址change()以及切换播放和暂停playPause();
使用方法如下:
var canvasvedio=new VideoToCanvas(document.getElementById("vidoid"),function(){
canvasvedio.hide();
$("#videoimg").show();});canvasvedio.play();
还有一个回调函数,就是在canvas播放完毕之后,可以传入回调函数!这个的测试地址请点击,但是在安卓的微信、和一些浏览器中还是会弹出新的窗口,很是郁闷!!
canvas绘制video的其他应用
canvas绘制video有很多其他的应用方式,例如我们可以制作视频播放同步模糊背景、视频截图、灰色视频等等。
具体有一篇文章,写的还不错,推荐大家看一下:http://html5doctor.com/video-canvas-magic/
但是这个只能做PC端了,移动端还是有问题的!!!!
相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
以上是移动端video视频播放的问题案例总结的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

过去几周,摩托罗拉 Razr 50 和 Razr 50 Ultra 最重要的规格和欧元价格已经泄露。现在,极其可靠的泄密者 @MysteryLupin 能够发布下面嵌入的预告视频,其中

聚类算法中的聚类效果评估问题,需要具体代码示例聚类是一种无监督学习方法,通过对数据进行聚类,将相似的样本归为一类。在聚类算法中,如何评估聚类的效果是一个重要的问题。本文将介绍几种常用的聚类效果评估指标,并给出相应的代码示例。一、聚类效果评估指标轮廓系数(SilhouetteCoefficient)轮廓系数是通过计算样本的紧密度和与其他簇的分离度来评估聚类效

iPhone以其强大的性能和多方面的功能而闻名,它不能幸免于偶尔的打嗝或技术困难,这是复杂电子设备的共同特征。遇到iPhone问题可能会让人感到沮丧,但通常不需要警报。在这份综合指南中,我们旨在揭开与iPhone使用相关的一些最常遇到的挑战的神秘面纱。我们的分步方法旨在帮助您解决这些常见问题,提供实用的解决方案和故障排除技巧,让您的设备恢复到最佳工作状态。无论您是面对一个小故障还是更复杂的问题,本文都可以帮助您有效地解决这些问题。一般故障排除提示在深入研究具体的故障排除步骤之前,以下是一些有助于

解决jQuery.val()无法使用的问题,需要具体代码示例对于前端开发者,使用jQuery是常见的操作之一。其中,使用.val()方法来获取或设置表单元素的值是非常常见的操作。然而,在一些特定的情况下,可能会出现无法使用.val()方法的问题。本文将介绍一些常见的情况以及解决方案,并提供具体的代码示例。问题描述在使用jQuery开发前端页面时,有时候会碰

尽管围绕高通 Snapdragon X Elite 进行了大肆宣传,但它的发布却相当平庸。在我们的评测中,我们发现搭载 Qualcomm Snapdragon X Elite X1E-78-100 的华硕 Vivobook S 15 最令人印象深刻的部分是无缝连接

机器学习模型的泛化能力问题,需要具体代码示例随着机器学习的发展和应用越来越广泛,人们越来越关注机器学习模型的泛化能力问题。泛化能力指的是机器学习模型对未标记数据的预测能力,也可以理解为模型在真实世界中的适应能力。一个好的机器学习模型应该具有较高的泛化能力,能够对新的数据做出准确的预测。然而,在实际应用中,我们经常会遇到模型在训练集上表现良好,但在测试集或真实

弱监督学习中的标签获取问题,需要具体代码示例引言:弱监督学习是一种利用弱标签进行训练的机器学习方法。与传统的监督学习不同,弱监督学习只需利用较少的标签来训练模型,而不是每个样本都需要有准确的标签。然而,在弱监督学习中,如何从弱标签中准确地获取有用的信息是一个关键问题。本文将介绍弱监督学习中的标签获取问题,并给出具体的代码示例。弱监督学习中的标签获取问题简介:

HTML中video视频标签详解HTML5中的video标签是一种用于在网页上播放视频的标签。它可以使用不同的格式来呈现视频,例如MP4、WebM、Ogg等等。在本篇文章中,我们将详细介绍video标签的使用方法,并提供具体的代码示例。基本结构下面是video标签的基本结构:
