html5多媒体组件指的是video(视频)组件和audio(音频)组件。HTML5多媒体组件可以在不借助诸如Flash Player等第三方插件的情况下,直接在你的网页上嵌入多媒体组件。浏览器提供原生支持视频的新能力使得网页开发人员更易于在不依赖于外置插件有效性的情况下,在他们的网站上添加视频组件。由于苹果公司现阶段在iPhone和iPad上使用的Flash技术的局限性,HTML5多媒体组件的能力就显得尤为重要了。
视频编码和解码
视频编码
所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。
用特定方法把已经编码的视频还原成它原有的格式,进行播放
编码说明
Theora 视频编码,Theora是开放而且免费的视频压缩编码技术,由Xiph基金会发布。做为该基金会Ogg项目的一部分,从VP3 HD高清到MPEG-4/DiVX格式都能够被Theora很好的支持。 使用Theora无需任何专利许可费。Firefox和Opera将通过新的HTML5元素提供了对Ogg/Theora视频的原生支持。
H.264 视频编码,H.264是在MPEG-4技术的基础之上建立起来的,H.264与以前的国际标准如H.263和MPEG-4相比,为达到高效的压缩,充分利用了各种冗余,统计冗余和视觉生理冗余。蓝光技术(Blu-ray)就采用这种格式
VP8 视频编码,视频压缩解决方案厂商On2 Technologies公司现已推出最新的视频压缩格式On2 VP8。On2 VP8是第八代的On2视频,能以更少的数据提供更高质量的视频,而且只需较小的处理能力即可播放视频
source标签属性
音频文件提供至少两种不同的解码器才能覆盖所有支持HTML5的浏览器。
如同对视频元素的处理一样,你需要使用source元素来实现该功能。
一个audio元素能包含多种source元素,因此你能为你的音频提供多种格式支持
videoAPI方法
videoAPI事件
videoAPI属性
- src:音乐的URL
- preload:预加载
- autoplay:自动播放
- loop:循环播放
- controls:浏览器自带的控制条
- <audio id="media" src="http://www.abc.com/test.mp3" controls></audio>
<video> 标签属性:
- src:视频的URL
- poster:视频封面,没有播放时显示的图片
- preload:预加载
- autoplay:自动播放
- loop:循环播放
- controls:浏览器自带的控制条
- width:视频宽度
- height:视频高度
video
id=
"media" src=
"http://www.abc.com/test.mp4" controls
width=
"400px" heigt=
"400px"video 获取HTMLVideoElement和HTMLAudioElement对象
- Media = new Audio("http://www.abc.com/test.mp3");
- //audio和video都可以通过标签获取对象
- Media = document.getElementById("media");
HTMLVideoElement 和 HTMLAudioElement 均继承自 HTMLMediaElement
//
错误状态
Media.error;
Media.error.code;
//网络状态
Media.currentSrc;
Media.src = value;
Media.canPlayType(type);
Media.networkState;
Media.load();
Media.buffered;
Media.preload;
//准备状态
Media.readyState;
Media.seeking;
//回放状态
Media.currentTime = value;
Media.startTime;
Media.duration;
Media.paused;
Media.defaultPlaybackRate = value;
Media.playbackRate = value;
Media.played;
Media.seekable;
Media.ended;
Media.autoplay;
Media.loop;
Media.play();
Media.pause();
//控制
Media.controls;
Media.volume = value;
Media.muted = value;
TimeRanges.length;
TimeRanges.start(index)
TimeRanges.end(index)
事件:
eventTester = function(e){
Media.addEventListener(e,function(){
console.log((new Date()).getTime(),e);
});
}
eventTester("loadstart");
eventTester("progress");
eventTester("suspend");
eventTester("abort");
eventTester("error");
eventTester("stalled");
eventTester("play");
eventTester("pause");
eventTester("loadedMetadata");
eventTester("loadeddata");
eventTester("waiting");
eventTester("playing");
eventTester("canplay");
eventTester("canplaythrough");
eventTester("seeking");
eventTester("seeked");
eventTester("timeupdate");
eventTester("ended");
eventTester("ratechange");
eventTester("durationchange");
eventTester("volumechange");