4.11.3_视频处理
来源:互联网 发布:安卓锁机软件制作教程 编辑:程序博客网 时间:2024/06/05 15:51
4.11.3_视频处理
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>视频处理</title> <style> body{ background: #ddd; } .floatingControls{ position: absolute; left: 75px; top: 300px; } #canvas{ background: #fff; border: thin solid #aaa; } #video{ display: none; } </style> </head> <body> <video id="video" controls> <source src="video/mov_bbb.mp4"></source> <source src="video/mov_bbb.ogg"></source> </video> <canvas id="canvas" width="480" height="270"></canvas> <div id="controls" class="floatingControls"> <input id="controlButton" type="button" value="播放" /> <input id="colorCheckbox" type="checkbox" checked="" />彩色图片 <input id="flipCheckbox" type="checkbox" />180度翻转 </div> </body> <script> var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); //离屏canvas var offscreenCanvas = document.createElement('canvas'); var offscreenContext = offscreenCanvas.getContext('2d'); var video = document.getElementById('video'); var controlButton = document.getElementById('controlButton'); var flipCheckbox = document.getElementById('flipCheckbox'); var colorCheckbox = document.getElementById('colorCheckbox'); var imageData; //视频下载时或者用户点击播放前显示的图像 var poster = new Image(); //初始化 poster.src = 'img/waterfall.jpg'; offscreenCanvas.width = canvas.width; offscreenCanvas.height = canvas.height; poster.onload = function(){ context.drawImage(poster,0,0); }; //事件 controlButton.onclick = function(){ if(controlButton.value === '播放'){ startPlaying(); controlButton.value = '暂停'; }else{ stopPlaying(); controlButton.value = '播放'; } } //函数 //开始播放 function startPlaying(){ video.play(); //请求帧动画,每播一帧的时间执行一次,大概根据浏览器的重绘速率来执行 requestAnimationFrame(nextVideoFrame); } //暂停播放 function stopPlaying(){ video.pause(); } //在绘制每帧时进行画面处理 function nextVideoFrame(){ if(video.ended){ //视频播放完毕后 controlButton.value = '播放'; }else{ //视频播放过程中处理每帧将会绘制在canvas中的图像 offscreenContext.drawImage(video,0,0,offscreenCanvas.width,offscreenCanvas.height); if(!colorCheckbox.checked){ //执行每帧黑白处理 removeColor(); } if(flipCheckbox.checked){ //执行翻转180度效果 drawFlipped(); }else{ //不执行特殊效果 context.drawImage(offscreenCanvas,0,0); } requestAnimationFrame(nextVideoFrame); } } //每帧黑白处理 function removeColor(){ var imageData; var length; var data; var average; imageData = offscreenContext.getImageData(0,0,offscreenCanvas.width,offscreenCanvas.height); data = imageData.data; length = data.length; for(var i=0 ; i<length;i+=4){ average = (data[i]+data[i+1]+data[i+2])/3; data[i] = data[i+1] = data[i+2] = average; } offscreenContext.putImageData(imageData,0,0); } //翻转180度效果 function drawFlipped(){ context.save(); context.translate(canvas.width/2,canvas.height/2); context.rotate(Math.PI); context.translate(-canvas.width/2,-canvas.height/2); context.drawImage(offscreenCanvas,0,0); context.restore(); } </script></html>
0 0
- 4.11.3_视频处理
- 视频处理的知识_开源项目_项目列表
- 美女妹妹照片_视频照(3)
- 视频处理
- 视频处理
- 视频处理
- 视频处理
- 视频处理
- 视频处理
- premiere 与after effects 如何混合使用处理视频_百度知道
- <HeadFirst_HTML5> O'REILLY_Chap.3_事件_处理程序
- 4.11.2_在Canvas中播放视频
- Python图像处理(3):视频显示
- opencv(3)---图片/视频处理应用
- 图像处理3:摄像头捕获视频
- 中断子系统3_中断入口处理
- 3-man手册_字符串处理函数
- 笔记3_看张鹏老师html+css视频所得
- jquery.nicescroll.min.js滚动条插件的用法
- 代码的规范,王垠,带你少走点弯路。
- 学习笔记—C语言基础篇08
- linux重启tomcat步骤
- js作用域(函数作用域、变量作用域、作用域链、with语句)
- 4.11.3_视频处理
- Maven学习 (六) 搭建多模块企业级项目
- HTTPClient4.5.2学习笔记(六):HTTP 缓存
- Android图片压缩(质量压缩和尺寸压缩)
- java进阶
- nginx内置变量
- hibernate 的@Column注解不生效
- linux sed命令详解
- 安卓蓝牙搜索发出的广播是刚开始就结束