js HTML5多媒体影音播放


Posted in Javascript onOctober 17, 2016

之前曾经介绍过,在HTML5中可以通过<video>标签在网页中播放影片,且不需要再安装额外的插件,此功能已经带给用户极大的便利。但基本的<video>标签只提供了简单功能的播放器界面,如果想要改变播放器的外观和功能,只能结合<canvas>标签和javascript语句,就能制作出酷炫的播放控制器。

{drawImage}

画布canvas如何与视频video标签结合,达到制作各种视频功能的效果呢?其秘诀在于通过画布重新描绘一次视频的内容,将视频的每个画面都转换成画布的图像,这样就可以通过javascript语言所提供的图像控制方法来操控它们。所以炫酷播放器所使用的视频功能,并不针对video,而是针对描绘出影像的canvas。

能够描绘影像到画布中的方法是“drawImage",此方法允许在canvas中插入画布(canvas),图像(img)和视频(video)等元素。

drawImage方法有三种:

drawImage(image,dx,dy)//原比例绘制图像
drawImage(image,dx,dy,dw,dh)//按设置长宽绘制图像
drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)//裁切后绘制图像

js HTML5多媒体影音播放

js HTML5多媒体影音播放

<html> 
 <head> 
   <meta charset="utf-8"/> 
   <style> 
    canvas{ 
      border:1px solid black; 
    } 
   </style> 
   
   <script > 
    function draw(){ 
      var imgx = new Image(); 
      imgx.src = 'img/gophers-Slice_Scoreboard.png'; 
      imgx.onload = function(){ 
        var canvas = document.getElementById('myCanvas'); 
        var context = canvas.getContext('2d'); 
        context.drawImage(this,20,20,75,75); 
      } 
    } 
  </script> 
 </head> 
 <body onload="draw()"> 
  <p>Image:</p> 
  <img id="pic"src="img/gophers-Slice_Scoreboard.png" alt="pic" width="50" height="50"> 
  <p>Canvas:</p> 
  <canvas id="myCanvas" style="border:1px solid;"> 
  </canvas> 
 </body> 
</html>

简单地通过drawImage描绘图像也许看不出来canvas的强大,其实真正精彩的是可以通过画布上描绘的结果加入javascript语句来实现的特效效果或功能。

接下来示范如何用javascript指令动态调整视频播放器的大小。

<html> 
 <head> 
   <meta charset="utf-8"/> 
   <style> 
   </style> 
   
   <script > 
    function eventWindowLoaded(){ 
    var videoElement=document.getElementById("theVideo"); 
    var widthtoHeightRatio=videoElement.width/videoElement.height; 
    var sizeElement=document.getElementById("videoSize"); 
    sizeElement.addEventListener('change',videoSizeChanged,false); 
    function videoChanged(e){ 
      var target=e.target; 
      var videoElement=document.getElementById("theVideo"); 
      videoElement.width=target.value; 
      videoElement.height=target.value/widthtoHeightRatio; 
    } 
    } 
  </script> 
 </head> 
 <body onload="eventWindowLoaded()"> 
 <div> 
  <form>Video Size: 
  <input type="range" id="videoSize" min="80" max="1280" step="1" value="320"/> 
  </form> 
  </div> 
  <div> 
  <video autoplay loop controls id="theVideo" src="funny.mp4" width="320" height="240"></video> 
  </div> 
 </body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ready()的几种实现方法小结
Jun 18 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
js实现汉字排序的方法
Jul 23 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
javascript中的event loop事件循环详解
Dec 14 Javascript
Vue仿微信app页面跳转动画效果
Aug 21 Javascript
vue-socket.io接收不到数据问题的解决方法
May 13 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 #Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 #Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 #Javascript
深入理解JS实现快速排序和去重
Oct 17 #Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 #Javascript
Angular 2应用的8个主要构造块有哪些
Oct 17 #Javascript
jQuery表单验证简单示例
Oct 17 #Javascript
You might like
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
公安学专业求职信
2014/07/27 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
单位未婚证明范本
2014/11/25 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
教育读书笔记
2015/07/02 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
分家协议书范本
2016/03/22 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
python通配符之glob模块的使用详解
2021/04/24 Python