HTML5中的音频和视频媒体播放元素小结


Posted in HTML / CSS onJanuary 29, 2016

音频和视频的编码/解码器是一组算法,用来对一段特定的音频或视频流进行编码和解码,以便音频和视频能够播放。原始的媒体文件体积非常大,假如不对其进行编码,那么构成一段视频和音频的数据可能会非常庞大,以至于在因特网上传播需耗费无法忍受的时间。若没有解码器的话,接收方就不能把编码过的数据重组为原始的媒体数据。编解码器可以读懂特定的容器格式,并且对其中的音频轨道和视频轨道解码。
理解媒体元素
1、基本操作:声明媒体元素

XML/HTML Code复制内容到剪贴板
  1. <audio controls src="Adele-Set Fire To The Rain.mp3">  
  2. 您所使用的浏览器不支持HTML5 audio   
  3. </audio>  

代码中的controls 特性是告诉浏览器显示通用的用户控件,包括开始、停止、跳播以及音量控制。如果不指定controls属性,用户将无法播放页面上的音频。
2、使用source元素
最简单的情况下,src属性直接指向媒体文件就可以了,但是,万一浏览器不支持相关容器或者编码器呢?这就需要用到备用声明了。备用声明中可以包含多种来源,浏览器可以从这么多的来源中进行选择:

XML/HTML Code复制内容到剪贴板
  1. <audio controls>  
  2. <source  src="Adele-Set Fire To The Rain.mp3" >  
  3. <source  src="Adele-Set Fire To The Rain.ogg" >  
  4. </audio>  

对于来源,浏览器会按照声明顺序判断,如果支持的不止一种,那么浏览器会选择支持的第一个来源。
3、媒体的控制
在audio元素或video元素中通过设置特性autoplay,不需要任何用户交互,音频或视频文件就会在加载完成后自动播放。
常用的控制函数

函数 动作
load() 加载音频/视频文件,为播放做准备,通常情况下不必调用,除非是动态生成的元素。用来在播放前预加载。
play() 加载(有必要的话)并播放音频/视频文件。除非音频/视频已经暂停在其他位置了,否则默认从头开始播放
pause() 暂停处于播放状态的音频/视频文件
canPlayType(type) 测试video元素是否支持给定MIME类型的文件

只读的媒体特性
只读特性
duration 整个媒体文件的播放时长,以s为单位。如果无法获取时长,则返回NaN。
paused 如果媒体文件当前被暂停,则返回true。如果还未开始播放,则返回false。
ended 如果媒体文件已经播放完毕,则返回true
startTime 返回最早的播放起始时间,一般是0.0,除非是缓冲过的媒体文件,并且一部分内容已经不在缓冲区
error 在发生了错误的情况下返回的错误代码
currentSrc 以字符串形式返回当前正在播放或已加载的文件。对应于浏览器在source元素中选择的文件。

可脚本控制的特性值
特性
autoplay 将媒体文件设置为创建后自动播放,或者查询是否已设置为autoplay
loop 如果媒体文件播放完毕后能重新播放则返回true,或者将媒体文件设置为循环播放(或者不循环播放)
currentTime 以s为单位返回从开始播放到现在所用的时间。在播放过程中,设置currentTime来进行搜索,并定位到媒体文件的特定位置
controls 显示或隐藏用户控制界面,或者查询用户控制界面当前是否可见
volume 在0.0到1.0之间设置音频音量的相对值,或者查询当前音量的相对值。
muted 为音频文件设置静音或者消除静音,或者渐层当前是否为静音
autobuffer 通知播放器在媒体文件开始播放前,是否进行缓冲加载。如果媒体文件已经设置为autoplay,则忽略测特性。

3.1使用audio和video元素
HTML5 video元素同audio元素非常类似,只是比audio元素多了一些特性。
特性
poster 在视频加载完成之前,代表视频内容的图片的URL地址,可以想象一下“电影海报”。该特性不仅可读,而且可以修改,以便更换图片
width、height 读取或设置显示尺寸。如果设置的宽度与视频本身大小不匹配,可能导致居中显示,上下或左右可能出现黑色条状区域。
videoWidth、videoHeight 返回视频固有的或自适应的宽度和高度。只读video元素还有一个audio元素不支持的关键特性:可被HTML5 Canvas的函数调用。

提示:当canvas使用视频作为绘制来源时,画出来的只是当前播放的帧。
HTML / CSS 相关文章推荐
使用CSS3制作饼状旋转载入效果的实例
Jun 23 HTML / CSS
关于css兼容性问题及一些常见问题汇总
May 03 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
Jul 06 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
Nov 18 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
Nov 05 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
CSS实现隐藏搜索框功能(动画正反向序列)
Jul 21 HTML / CSS
css3中2D转换之有趣的transform形变效果
Feb 24 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
Jan 29 #HTML / CSS
Html5 audio标签样式的修改
Jan 28 #HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
Jan 27 #HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 #HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 #HTML / CSS
Html5实现二维码扫描并解析
Jan 20 #HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 #HTML / CSS
You might like
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python tkinter窗口最大化的实现
2019/07/15 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
工厂会计员职责
2014/02/06 职场文书
文明生主要事迹
2014/05/25 职场文书
司法助理专业自荐书
2014/06/13 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Java中的随机数Random
2022/03/17 Java/Android