无论是否认可,flash早已不像过往那样如日中天了。亚马逊全面放弃flash、苹果放弃flash、安卓也放弃了移动端的flash支持。事实上flash已经不太适合web开发了,由于HTML5中的video和audio这两个API为web开发提供了更高效的音频视频控制。或许你能够看看这篇文章。javascript
在HTML5页面中,咱们可使用video标签来实现对视频文件的控制。可是在浏览器中打开视频并没那么简单,不只浏览器要支持标签,并且还要有编码译码器来播放视频。显然最好的解决方式是HTML5规范规定一个统一的编码译码器,而后让浏览器制造商去执行。
可是,那些这些制造商的尿性你们都是知道的,HTML5规范到最后也没有制定一个统一的视频编码译码器标准。
最后的状况是,若是要考虑视频在不一样浏览器下的兼容性,开发者就要考虑好些状况了:html
而.MP4后缀的视频文件是带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件; WebM是 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件;Ogg是带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件。
因此通常只须要Ogg、MP4和flv/swf格式的视频文件,也就是须要三个视频文件,就能完美地在各个浏览器间显示视频了。html5
固然,各浏览器支持一直在变更,全部脱离时间来谈支持的都是在耍流氓。能够在caniuse上查看下各浏览器对video的支持。
java
<video width="400px" height="400px" src="video/ video.mp4" type="video/mp4" controls> 视频不支持时显示的文字 </video>
<video width="400px" height="400px" controls> <source src="video/ video.ogg" type="video/ogg" /> <source src="video/ video.mp4" type="video/mp4" /> 还用渣渣浏览器??? </video>
<video width="400px" height="400px" controls> <source src="video/ video.ogg" type="video/ogg" /> <source src="video/ video.mp4" type="video/mp4" /> <embed src="video/ movie.swf" type="application/x-shockwave-flash" width="400" height="400px" allowscriptaccess="always" allowfullscreen="true"></embed> 抱歉,本站不欢迎你... </video>
规定要检测的音频/视频类型(和可选的编解码器)。
经常使用值:web
经常使用值,包括编解码器:api
Video标签含有src、poster、preload、autoplay、loop、controls、width、height等几个属性,以及一个内部使用的标签<source>。浏览器
src属性和poster属性
你能想象src属性是用来干啥的。跟<img>标签的同样,这个属性用于指定视频的地址。而poster属性用于指定一张图片,在当前视频数据无效时显示(预览图)。视频数据无效多是视频正在加载,多是视频地址错误等等。缓存
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay"></video>
preload属性
此属性用于定义视频是否预加载。若是有这个属性有三个可选择的值:none(页面加载后不载入视频)、meta(页面加载后只载入元数据)、auto(页面加载后载入整个视频)。若是不使用此属性,默认为auto。若是<video>标签有autoplay属性的话,会忽略preload属性。服务器
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" preload="none"></video>
autoplay属性
autoplay属性用于设置视频是否自动播放,是一个布尔属性。当出现时,表示自动播放,去掉是表示不自动播放。网络
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" preload="none"></video>
loop属性
指定视频是否循环播放,也是一个布尔属性
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" loop="loop"></video>
<source>标签
用于给video标签指定多个可选择的视频文件地址,标签最后会选择一个,并且要在<video>标签没有src属性时使用。
浏览器按source标签的顺序检测指定的视频是否能播放,没法播放的缘由多是格式不支持,或者文件不存在等。若是不能播放,则尝试播放下一下。<source>标签不能单独出现,必需要放在媒体标签里面。
- src属性 指定媒体的地址,和video标签里的同样
- Type属性 说明src属性指定媒体的类型,帮助浏览器在获取媒体前判断是否支持此类别的媒体格式。具体的属性值,请参见w3c的文档。
- Media属性 用于说明媒体在何种媒介中使用,不设置时默认值为all,表示支持全部媒介。 其实就是和<style>标签的media属性如出一辙。
注意:XHTML中属性不容许简写,好比controls必须写做<video src='src/myvideo' controls='controls'>
HTML5中的媒体API给咱们更强大的媒体控制能力。能够在轻松学会HTML5播放器开发这个学习页面简单了解下媒体API中经常使用的几个属性和方法。
HTMLVideoElement和HTMLAudioElement 均继承自HTMLMediaElement
var myVid=document.getElementById("video1"); alert(myVid.error.code);
javascript //当在视频进度条点击当前播放位置的后面时,span1的位置会显示'Seeking:true',而后过一会变成'Seeking:false' myVid=document.getElementById("video1"); function isSeeking() { document.getElementById("span1").innerHTML=("Seeking: " + myVid.seeking); } myVid.addEventListener('seeking',isSeeking;)
完整的事件列表 w3c
事实上,当媒体加载时,会依次发下以下事件:
更完整的媒体API能够查看video和audio参考手册
<audio>用于定义音频文件,好比音乐或者其余的音频流。
目前<audio>支持3种文件格式:MP三、Wav、Ogg。也能够在caniuse上查看目前的支持状况。
以前说过,HTMLVideoElement和HTMLAudioElement 均继承自HTMLMediaElement,因此<audio>和<video>的API基本是通用的,并且两个标签能使用的属性也相同。
<audio>
标签,使用插件:<object>
标签 或者 <embed>
标签添加在页面上.<embed height="50" width="100" src="horse.mp3"> <object height="50" width="100" data="horse.mp3"></object>
`<embed> `标签订义外部(非 HTML)内容的容器。(这是一个 HTML5 标签,在 HTML4 中是非法的,可是全部浏览器中都有效)。
audio
标签,而后若是失败代码回退至<embed>
。缺点是要把音频转换为不一样的格式,且<embed>
没法回退来显示错误消息。<a>
标签。<a href="horse.mp3">Play the sound</a>
可是考虑到这种方式会显示成一个超连接,而后就须要对`<a>`元素进行处理了,所以不太推荐。
<a href="horse.mp3">Play Sound</a> <script src="http://mediaplayer.yahoo.com/latest"></script>
而后只需简单地把 MP3 文件连接到您的 HTML 中,JavaScript 会自动地为每首歌建立播放按钮。雅虎媒体播放器为您的用户提供的是一个小型的播放按钮,而不是完整的播放器。不过,当您点击该按钮,会弹出完整的播放器。
当您在网页中包含声音,或者做为网页的组成部分时,它被称为内联声音。
若是您打算在 web 应用程序中使用内联声音,您须要意识到不少人都以为内联声音使人恼火。同时请注意,用户可能已经关闭了浏览器中的内联声音选项。
咱们最好的建议是只在用户但愿听到内联声音的地方包含它们。一个正面的例子是,在用户须要听到录音并点击某个连接时,会打开页面而后播放录音。
<audio src="song.ogg" controls="controls"></audio>
<audio src="song.ogg" controls="controls"> Your browser does not support the audio tag. </audio>
<audio controls="controls"> <source src="song.ogg" type="audio/ogg"> <source src="song.mp3" type="audio/mpeg"> Your browser does not support the audio tag. </audio>
<track>
标签为媒体元素(好比 <audio>
and <video>
)规定外部文本轨道。它也是HTML5中的新标签。
用于规定字幕文件或其余包含文本的文件,当媒体播放时,这些文件是可见的。
属性:
这一节提到的另外还有VideoTrackList对象和VideoTrack对象,略微了解一下。具体说明以下:
VideoTrackList 对象
VideoTrack对象
表示一个视频轨道,可用属性有:
能够看看这个连接(msdn)。这甚至能作到用JS提取每一时刻的显示字幕,用的是TextTrackCue的API,前面未讲到过,也能够在这个页面上看看。
使用字幕的代码以下:
<video id="mainvideo" controls autoplay loop> <track src="en_track.vtt" srclang="en" label="English" kind="caption" default> <track src="cn_track.vtt" srclang="zh-cn" label="简体中文" kind="caption"> </video>
视频给了两字幕文件,一个是中文的,一个是英文的,默认英文字幕。
经常使用字幕格式为vtt模式,是以UTF-8编码的文本文件,MIME类型约定为'text/vtt',须要在服务器端进行配置。内容格式以下:
WEBVTT 00:00:01.878 --> 00:00:05.334 曾经有一份真诚的爱情放在我面前, 00:00:08.608 --> 00:00:15.296 我没有珍惜,等我失去的时候我才后悔莫及, 人世间最痛苦的事莫过于此。