H5实现透明通道视频

目前在做一个项目,项目要求是ui和视频相结合,做出动态效果。视频要在ui界面之上,但是又必须可以看见下面的ui界面,所有必须要求视频是透明的。
接着我查了一些资料,但是对h5如何运用透明通道的视频的资料介绍很少。一般透明视频是.mov格式的,但是h5并不支持此格式。所以下面我介绍2种方法。

第一种方法,png序列帧

动画由ui设计师做好,导出透明的png序列帧图片,我们只需要加个定时器每个多少毫秒切换图片即可。下面贴代码

js部分:

$(function(){var i=0;var timer;timer=setInterval(function(){i++;i=parseInt(i);if(i<10){$(".img img").attr("src","img/my layout_0000"+i+".png");}else if(i<100){$(".img img").attr("src","img/my layout_000"+i+".png");}else if(i<374){    $(".img img").attr("src","img/my layout_00"+i+".png");}else if(i==374){$(".img img").attr("src","img/my layout_00374.png");clearInterval(timer)}   },100)
})

-* 解析*

判断语句是因为ui设计给我序列帧图片的时候图片的序号名字就已经定了,我也没有改,因为图片374张。这个根据你图片的名字来看是否需要判断语句。当到最后一张图片的时候,就清除定时器。

第二种方法,canvas

运用canvas绘制视频,直接贴代码

html部分

<video id="video" style="display:none" autoplay><source src="png.webm"></source>
</video>
<canvas id="buffer" width="1920" height="1080"></canvas>
<canvas id="output" width="1920" height="1080"></canvas>

js部分

(function(){var outputCanvas = document.getElementById('output'),output = outputCanvas.getContext('2d'),bufferCanvas = document.getElementById('buffer'),buffer = bufferCanvas.getContext('2d'),video = document.getElementById('video'),width = outputCanvas.width,height = outputCanvas.height,interval;   function processFrame() {buffer.drawImage(video, 0, 0);//drawImage(要绘画的元素, x轴, y轴)//getImageData 复制画布上指定图像的像素数据var image = buffer.getImageData(0, 0, width, height),imageData = image.data,alphaData = buffer.getImageData(0, 0, width, height).data;//console.log(imageData)for (var i = 3, len = imageData.length; i < len; i+=4) {imageData[i] = alphaData[i-1];}// putImageData() 将图像数据放回画布:output.putImageData(image, 0, 0, 0, 0, width, height);}video.addEventListener('play', function() {clearInterval(interval);interval = setInterval(processFrame, 40)}, false);video.addEventListener('ended', function() {video.play();}, false);})();

-* 解析*
html部分我没有做视频格式的兼容处理,因为我的项目只在固定的电脑上,指定chrome浏览器,所以不考虑兼容性。
js部分用到canvas的一些知识
getImageData 复制画布上指定图像的像素数据
putImageData() 将图像数据放回画布

另外

项目中需要一些互动按钮,但是按钮要在视频的下面,所有的元素都需要在视频之下,但是这样就没有办法给按钮加事件了,那怎么办呢?其实很简单,一个按钮需要写2个,一个带ui元素的按钮,在视频之下,海还有一个是透明的按钮,在视频之前,同时定位在ui元素按钮的上面,即两个按钮是重合的,所以只需要给透明的按钮加事件就可以了


H5实现透明通道视频相关推荐

  1. 使用avpro播放带透明通道视频

    关于使用avpro播放带透明通道视频的总结 文章目录 关于使用avpro播放带透明通道视频的总结 前言 一.使用quickTime pro对图片序列转码和导出 二.在unity中播放,我就不赘述了 总 ...

  2. UE4透明通道视频效果

    截至 2019.5.27 官方目前还未针对透明通道的视频提供比较好的解决方案,目前网上能查询到的方法主要还是通过绿幕抠图的效果来实现. 而现在能查询到的一个支持此功能的插件,一直处于未发布状态.为了解 ...

  3. ffmpeg rtmp 花屏_FFmpeg - 如何编码封装透明通道视频

    最近项目在做一个功能,需要把动态的视频添加到静态图片上面,使得图片看起来有一层会动态变化的前景.本次项目涉及安卓和 iOS 两个不同平台.由于使用常规的方法不能够做出想要的效果,我特意去学习了视频制作 ...

  4. unity 手机端和编辑器下播放带有透明通道的视频详解

    unity 手机端和编辑器下播放带有透明通道的视频详解 在项目开发中,可能会涉及到视频的播放,普通的视频播放如果大家不会的请自行百度,今天主要讲解带有透明通道的视频的播放问题,尤其是在手机端的处理,下 ...

  5. ae输出quicktime设置_AE大神再现酷炫神技能,AE中怎么输出带透明通道的视频文件!...

    大家好,我是爱踢汪.今天又给大家送上一波福利.在AE中之最带透明通道的视频文件,是每个AE新手们的必修课,那么该怎么制作呢?输出的时候又该如何设置呢?今天就让本汪来分享一下:AE中怎么输出带透明通道的 ...

  6. 绿幕特效视频的透明通道输出与拼合为图像矩阵

    既然之前的特效实现提升到了质的飞跃,那么就考虑敌机(本机)爆炸时的效果问题了. 首先download下某个绿幕爆炸特效视频: 本次使用aftereffects进行抠像: 首先视频导入到ae中,在效果- ...

  7. 网页视频带[透明通道]半透明视频

    今天看见了lol上面的专场动画感觉非常的炫酷于是萌生了一个想法[能否在网页中使用像lol的炫酷动画]于是就走了不少坑才找到了一种在网页中能够播放透明视频素材的格式叫[webm]格式也发现了这个格式的很 ...

  8. ffmpeg把透明背景图片合成透明背景视频

    透明背景的照片序列: 照片序列:PNG可以有alpha(透明度)通道,可以是透明背景. 视频格式:在视频编辑中,大多数视频格式不支持透明度,但是有三种格式支持透明背景视频Quicktime Anima ...

  9. AE489 4K卡通水火焰手绘烟雾漫画泡泡文字闪光特效元素包带Alpha透明通道ae模板

    AE489 4K卡通水火焰手绘烟雾漫画泡泡文字闪光特效元素包带Alpha透明通道ae模板 模板用途:液体,综艺节目动画元素,泡泡文字,卡通,卡通泡泡,文字效果,火,独特,闪光效果,手绘,烟,标题,水 ...

最新文章

  1. uint8、double、mat2uint、imhist绘直方图w恩替藐视
  2. 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战
  3. 一个迄今为止最快的并发键值存储库FASTER诞生
  4. Fedora 17 结实的奇迹:最新的OpenStack和JBoss
  5. as5.4安装gcc和g++
  6. Serverless Framework 无服务器架构
  7. 冬季打针后忌用手按摩
  8. spring集成mybatis后怎么在控制台打印sql语句
  9. Fortran与C/C++混合编程示例
  10. wifi频率和zigbee干扰_怎样设置Zigbee和wifi信道避免干扰?
  11. GitHub 上 10 个顶级开源项目,从基础到源码统统帮你搞定
  12. 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题
  13. Directx11进阶教程之Tiled Based Deffered Shading
  14. 【python实现抠图】
  15. c语言乘积imnl,2017年计算机二级C语言考前必做试题及答案2
  16. 中集集团高科技企业中集飞瞳,贯彻国家人工智能与实体经济深度融合战略,成熟AI产品智能航运智能化港航智慧港口智能铁路智能多式联运
  17. 【谷粒学院】001-项目概述、Mybatis Plus入门
  18. 华为手机使用应用沙盒一键修改电池信息
  19. ROS navigation调试基础(实现真实机器人导航)
  20. Oracle 同义词总结

热门文章

  1. C#,深入浅出全接触
  2. 背景随意更换,同时改变多个竖屏短视频背景图片的两种方法
  3. Linux查看目录结构
  4. xLua热更新(二)实现热更新
  5. IE浏览器无法联网的解决办法
  6. folly库安装(4)folly依赖的重要组件安装:double-conversion, google-gflags, glog, fmt, googletest, boost等
  7. 第16集丨阳明心学量子力学
  8. mysql数据库执行mysqladmin flush-hosts方法
  9. android手机8g内存够用嘛,8G 运存已经过时了?手机运存到底要多大才够用?
  10. 快速上手Luminati的三个使用方法