HTML5_音视频标签 <audio> 和 <video>
HTML5_音视频标签 <audio> 和 <video>
audio 和 video 都是 inline行内元素
如果浏览器支持,则不显示标签文本
IE8 不支持 audio video 标签
http://s8.qhimg.com/share/audio/piano1/a4.mp3
http://pic.ibaotu.com/00/60/75/01J888piCPNw.mp4
http://img.ksbbs.com/asset/Mon_1703/eb048d7839442d0.mp4
- 浏览器对于资源的格式,支持不一
- 做以下兼容,浏览器会选择最优格式运行
<audio controls>
<source src="./audio/IDon'tWannaLiveForever.mp3" type="audio/mpeg"/>
<source src="./audio/IDon'tWannaLiveForever.ogg" type="audio/ogg" codecs="vorbis"/>
<source src="./audio/IDon'tWannaLiveForever.acc" type="audio/acc" codecs="aac"/>
您的浏览器不支持音视频,建议下载<a href="./audio/IDon'tWannaLiveForever.mp3">手动下载</a>
</audio> <video id="my_video" controls>
<source src="./video/CapitalCities-KangarooCourt.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'/>
<source src="./video/CapitalCities-KangarooCourt.ogg" type='video/ogg; codecs="theora, vorbis"'/>
<source src="./video/CapitalCities-KangarooCourt.webm" type='video/webm; codecs="vp8, vorbis"'/>
您的浏览器不支持音视频,建议下载<a href="./video/CapitalCities-KangarooCourt.mp4">手动下载</a>
</video>- video 的属性
- width: 320;
单位 px 可写可不写
- height: 480px;
音视频 即使设置的是正方形,也会按照宽高比例进行显示
- poster: "./img/1.jpg";
海报帧,在播放前或者跳帧前显示
- autoplay
有些高版本浏览器为了节约内存,已经禁止
- loop: "loop";
开启循环播放
- muted: "muted";
- preload: ;
none; 提示该资源不需要缓存
metadata; 提示用户不需要查看该视频
auto; 不管用户是否需要,都会加载整个视频
""; 等同于 auto;
- 常用 js 事件
onloadedmetadata 当音频元数据加载完毕时触发。
ontimeupdate 播放过程中实时触发。
onvolumechange 音量改变时触发
- 视频:
onabort 在播放被终止时触发,例如, 当播放中的视频重新开始播放时会触发这个事件。
oncanplay 在媒体数据已经有足够的数据(至少播放数帧)可供播放时触发。这个事件对应 CAN_PLAY的readyState。
oncanplaythrough 在媒体的 readyState 变为 CAN_PLAY_THROUGH 时触发,表明媒体可以在保持当前的下载速度的情况下不被中断地播放完毕。注意:手动设置 currentTime 会使得 firefox 触发一次 canplaythrough 事件,其他浏览器或许不会如此。
ondurationchange 元信息已载入或已改变,表明媒体的长度发生了改变。例如,在媒体已被加载足够的长度从而得知总长度时会触发这个事件。
onemptied 媒体被清空(初始化)时触发。
onended 播放结束时触发。
onerror 在发生错误时触发。元素的error属性会包含更多信息。参阅 Error handling 获得详细信息。
onloadeddata 媒体的第一帧已经加载完毕。
onloadedmetadata 媒体的元数据已经加载完毕,现在所有的属性包含了它们应有的有效信息。
onloadstart 在媒体开始加载时触发。
onmozaudioavailable 当音频数据缓存并交给音频层处理时
onpause 播放暂停时触发。
onplay 在媒体回放被暂停后再次开始时触发。即,在一次暂停事件后恢复媒体回放。
onplaying 在媒体开始播放时触发(不论是初次播放、在暂停后恢复、或是在结束后重新开始)。
onprogress 告知媒体相关部分的下载进度时周期性地触发。有关媒体当前已下载总计的信息可以在元素的buffered属性中获取到。
onratechange 在回放速率变化时触发。
onseeked 在跳跃操作完成时触发。
onseeking 在跳跃操作开始时触发。
onstalled 在尝试获取媒体数据,但数据不可用时触发。
onsuspend 在媒体资源加载终止时触发,这可能是因为下载已完成或因为其他原因暂停。
ontimeupdate 元素的currentTime属性表示的时间已经改变。
onvolumechange 在音频音量改变时触发(既可以是 volume 属性改变,也可以是 muted 属性改变).。
onwaiting 在一个待执行的操作(如回放)因等待另一个操作(如跳跃或下载)被延迟时触发
- 音频:
onabort 在播放被终止时触发,例如, 当播放中的视频重新开始播放时会触发这个事件。
oncanplay 在媒体数据已经有足够的数据(至少播放数帧)可供播放时触发。这个事件对应 CAN_PLAY 的 readyState。
oncanplaythrough 在媒体的 readyState 变为 CAN_PLAY_THROUGH 时触发,表明媒体可以在保持当前的下载速度的情况下不被中断地播放完毕。注意:手动设置 currentTime 会使得firefox触发一次 canplaythrough 事件,其他浏览器或许不会如此。
ondurationchange 元信息已载入或已改变,表明媒体的长度发生了改变。例如,在媒体已被加载足够的长度从而得知总长度时会触发这个事件。
onemptied 媒体被清空(初始化)时触发。
onended 播放结束时触发。
onerror 在发生错误时触发。元素的 error 属性会包含更多信息。参阅 Error handling 获得详细信息。
onloadeddata 媒体的第一帧已经加载完毕。
onloadedmetadata 媒体的元数据已经加载完毕,现在所有的属性包含了它们应有的有效信息。
onloadstart 在媒体开始加载时触发。
onmozaudioavailable 当音频数据缓存并交给音频层处理时
onpause 播放暂停时触发。
onplay 在媒体回放被暂停后再次开始时触发。即,在一次暂停事件后恢复媒体回放。
onplaying 在媒体开始播放时触发(不论是初次播放、在暂停后恢复、或是在结束后重新开始)。
onprogress 告知媒体相关部分的下载进度时周期性地触发。有关媒体当前已下载总计的信息可以在元素的 buffered 属性中获取到。
ratechange 在回放速率变化时触发。
onseeked 在跳跃操作完成时触发。
onseeking 在跳跃操作开始时触发。
onstalled 在尝试获取媒体数据,但数据不可用时触发。
onsuspend 在媒体资源加载终止时触发,这可能是因为下载已完成或因为其他原因暂停。
ontimeupdate 元素的 currentTime 属性表示的时间已经改变。
onvolumechange 在音频音量改变时触发(既可以是 volume 属性改变,也可以是 muted 属性改变).。
onwaiting 在一个待执行的操作(如回放)因等待另一个操作(如跳跃或下载)被延迟时触发
- 常用 js 控制函数
myVideo.play() 媒体播放
myVideo.pause() 媒体暂停
myVideo.load() 重新加载媒体
- 常用的 js 属性
myVideo.duration;
myVideo.currentTime; 可读可写
myVideo.volume; /* 0-1 的值,静音的时候为 0,音量满格时为 1 */
myVideo.muted; /* 返回当前音量状态,true 表示静音 */
myVideo.paused; /* true 表示视频暂停了 */
myVideo.ended; /* true 表示视频播放到最后了 */
myVideo.error 媒体发生错误的时候,返回错误代码 (只读)
myVideo.currentSrc 以字符串的形式返回媒体地址(只读)
- 视频多的部分:
myVideo.poster : 视频播放前的预览图片(读写)
myVideo.width、myVideo.height : 设置视频的尺寸(读写)
myVideo.videoWidth、 videoHeight : 视频的实际尺寸(只读)
- 主流视频格式文件格式 (容器格式)
MPEG-4 通常以 .mp4 为扩展名
Flash视频 通常以 .flv 为扩展名
Ogg 通常以 .ogv 为扩展名
WebM 通常以 .webm 为扩展名
频视频交错 通常以 .avi 为扩展名
- 主流音频格式文件格式 (容器格式)
MPEG-3 .mp3
Acc 音频 .acc
Ogg 音频 .ogg
- .avi 和 .mp4
仅仅是容器的格式
只是决定怎么将视频存储起来,
而不关心存储的内容
包含了音频轨道,视频轨道和其他一些元数据
- 元数据
包含了视频的封面,标题,子标题,字幕等相关信息
编解码器
一组算法,用来对一段特定的音频/视频进行编码和解码
原始媒体文件体积巨大,
如果不进行编码,那么数据量非常惊人
如果不进行解码,就无法将编码后的数据重组为原始的媒体数据
- 视频编解码器
H.264
VP8
Ogg Theora
- 音频编解码器
AAC
MPEG-3
Ogg Vorbis
- 浏览器对于容器和编解码器支持的情况
Browser MP4(H.264 + AAC) WebM(VP8 + Vorbis ) Ogg(Theora + Vorbis)
Internet Explorer 9 YES NO NO
Firefox 4.0 NO YES YES
Google Chrome YES YES YES
Apple Safari 5 YES NO NO
Opera 10.6 NO YES YES
http://www.html5videoplayer.net/html5video/html5-video-browser-compatibility/
目前还没有一种编解码和容器的组合能应用于所有的浏览器中!!!
- H.264: 别名 MPEG-4 的第十部分,由 MPEG 研发并于 2003 年标准化
它的目的支持一切设备,无论是低带宽低 cpu ,还是高带宽高 cpu 或者是两者之间。
要做到这一点,H.264 标准被分成不同的几种配置。高配置使用了更多特性,
这会导致在解码过程中更加消耗 CPU ,但视频文件本身会更小,视频效果也更好
苹果 iphone 手机 基本配置 (BaseLine)
正常的电视机支持 基本配置 (BaseLine) 和 主配置 (Main) 两种
正常的电脑支持 基本配置 (BaseLine) 和 主配置 (Main) 高级配置 (high) 三种
- 处理视频的一个流程: (tools_resource)
把压缩文件 ffmpeg.zip 放到 software 文件夹中,解压到当前文件夹,进入 bin,逐次双击运行
将 bin 加入系统环境变量
在命令行中进入 .mp4 文件所在的文件夹
- 格式转化
用 FFmpeg 制作MP4 视频
ffmpeg -i test.mp4 -c:v libx264 -s 1280x720 -b:v 1500k -profile:v high -level 3.1 -c:a aac -ac 2 -b:a 160k -movflags faststart OUTPUT.mp4
用 FFmpeg 制作 WebM 视频
ffmpeg -i test.mp4 -c:v libvpx -s 1280x720 -b:v 1500k -c:a libvorbis -ac 2 -b:a 160k OUTPUT.webm
FFmpeg 制作 Ogg 视频
ffmpeg -i test.mp4 -c:v libtheora -s 1280x720 -b:v 1500k -c:a libvorbis -ac 2 -b:a 160k OUTPUT.ogv
FFmpeg 制作Mp3音频
ffmpeg -i test.mp3 -c:a libmp3lame -ac 2 -b:a 160k OUTPUT.mp3
FFmpeg 制作Ogg音频
ffmpeg -i test.mp3 -c:a libvorbis -ac 2 -b:a 160k OUTPUT.ogg
ffmpeg -i IDon'tWannaLiveForever.mp3 -c:a libvorbis -ac 2 -b:a 160k IDon'tWannaLiveForever.ogg
FFmpeg 制作ACC音频
ffmpeg -i test.mp3 -c:a aac -ac 2 -b:a 160k OUTPUT.aac
- 1. 制作一个 Ogg 容器中使用 Theora 视频和 Vorbis 音频的版本
2. 制作另外一个版本,使用 WebM 视频容器(VP8 + Vorbis)
3. 再制作一个版本,使用 MP4 视频容器,并使用 H.264 基本配置的视频和 ACC 低配的音频
4. 链接上面 3 个文件到同一个 video 元素,并向后兼容基于 Flash 的视频播放器
- 自定义播放器
- 行内元素底部缝隙
- 调整基线 vertical-align: ;
- 元素的 width、height,随着屏幕窗口大小改变
- window.onresize = function(){};
- 元素设置宽高
1. 设置 width、height
2. 定位
#process_box {
position: absolute;
top: 0px;
bottom: 0px;
left: 55px;
right: 230px;
}
3. 浮动,让子元素撑开
- 功能函数 ----addClass(),removeClass()
- addClass()
function addClass(ele, className){
var reg = new RegExp("\\b"+className+"\\b");
if(!reg.test(ele.className)){
/* 如果元素 ele 不包含 className */
ele.className += " "+className;
};
};- removeClass()
function removeClass(ele, className){
if(ele.className){
var reg = new RegExp("\\b"+className+"\\b");
var classes = ele.className;
ele.className = classes.replace(reg, "");
if(/^\s*$/g.test(ele.className)){
ele.removeAttribute("class");
};
}else{
ele.removeAttribute("class");
}
};- toggleClass()
function toggleClass(ele, className){
if(ele.className){
var reg = new RegExp("\\b"+className+"\\b");
if(!reg.test(ele.className)){
/* 如果元素 ele 不包含 className */
ele.className += " "+className;
}else{
var classes = ele.className;
ele.className = classes.replace(reg, ""); if(/^\s*$/g.test(ele.className)){
/* 如果元素的 class 为空, 则清除 class 属性 */
ele.removeAttribute("class");
};
};
}else{
/* 如果元素的 className 属性不存在, 则清除 class 属性 */
ele.removeAttribute("class");
};
};
- 将视频的 currentTime 设置为 0
- 封装功能函数
- 模仿 jQuery 源码
(function(w){
w.$ = {};
// callBack 将内部组件的 move 状态暴露在了外部的业务逻辑
w.$.drag = function(ele, callBack){
ele.onmousedown = function(e){
e = e || window.event;
};
};
})(window);
- 对象.属性()
var callBack = {
move:function(){
console.log("Runing!");
}
}; callBack.move();
callBack["move"](); // 调用,推荐使用 callBack.stop = "Stop Now!"; // 动态添加属性,推荐使用
callBack["stop"] = "Stop Now!";
- 功能函数 ----将 秒 转为 时:分:秒
funtion str2HMS(seconds){
seconds = parseInt(seconds); var s = toZero( Math.floor(seconds%60) );
var m = toZero( Math.floor(seconds%3600/60) );
var h = toZero( Math.floor(seconds/3600) ); return h+":"+m+":"+s;
}; function toZero(num){
if(num<10){
num = "0"+num;
}else{
num = ""+num;
};
};
HTML5_音视频标签 <audio> 和 <video>的更多相关文章
- HTML5笔记2——HTML5音/视频标签详解
音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...
- HTML5音/视频标签详解
一.发展历: 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Qu ...
- html5 音频和视频(audio And video)
1.音频和视频 Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定 ...
- HTML插入音频和视频:audio和video标签及其属性
一.上传到第三方网站,然后引入例如视频上传到优酷网,然后得到代码 <iframe height=498 width=510 src='http://player.youku.com/embed/ ...
- html音视频标签
音视频标签是html5标签,分别为<audio></audio>和<video></video>,这两个标签用法大致相同,且都仅在IE9及以上版本和其他 ...
- HTML5 Audio and Video 的新属性简介
前言:HTML5 中 Audio and Video的使用方法比较简单,但就是比较复杂,方法属性多.如果不常用的几乎难以记住,甚至有些人难以区分不同属性和方法的作用,更别说应用了.以下对Audio a ...
- HTML5_布局and音视频
HTML5_布局and音视频 I.HTML5标签的改变1.文档声明HTML语法是不区分大小写的HTML5的DTD声明为:<!doctype html>确保浏览器能在HTML5的标准模式下进 ...
- HTML5 audio与video标签实现视频播放,音频播放
随着互联网的飞速发展以及HTML5的应用,越来越多的项目中用到video,audio当常用标签. <audio> 标签属性 <audio src="song.mp3&quo ...
- HTML video 视频标签全属性详解
HTML 5 video 视频标签全属性详解 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...
随机推荐
- Consequence of Point-by-Point Bounds
设 $X$ 是完备距离空间, $\scrF$ 是 $X$ 上的实连续函数族且具有性质: 对于每一 $x\in X$, 存在常数 $M_x>0$, 使得对于每一 $F\in\scrF$, $$\b ...
- Javaweb学习笔记——(二十七)——————泛型、泛型的通配符、反射泛型信息、反射注解、注解
泛型 1.泛型类:具有一个或多个类型变量的类,称之为泛型类 class A<T>{ } 2.在创建泛型实例时,需要为其类型变量赋值 A<String> a = new ...
- PWD的编译及调试
实现mypwd 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd Linux命令学习:pwd命令 该命令用来显示目前 ...
- auto类型说明符
auto让编译器通过出初始值来推算变量的类型,显然,auto定义的变量必须有初始值: //由val1和val2相加的结果可以推断出item的类型 auto item = val1 + val2;//i ...
- PHP content-type为"application/json"的post过来的数据$_POST接受不到的问题
ajax默认是以application/x-www-form-urlencoded方式提交.也就是常见的表单提交方式.在PHP中使用$_POST方式可以轻松获取. 但如果将ajax的请求头强制指定为a ...
- Linux shell 脚本总结
在中括号中,判断变量的值, 加不加双引号的问题? -z 判断 变量的值,是否为空: zero = 0 - 变量的值,为空,返回0,为true - 变量的值,非空,返回1,为false -n 判断变量的 ...
- 小程序 模态对话框自定义组件(modal)
1. 概述 1.1 说明 小程序中使用wx.showModal(Object object)打开一个模态对话框,但是目前小程序所提供的modal中的内容显示比较死板,不能够完全满足工作中所遇到的功能信 ...
- 列表生成式,迭代器&生成器
python3中range(10)就 是迭代器 列表生成式 #列表生成式 a=[0,1,2,3,4,5] b=[] for index,i in enumerate(a): a[index]+1 pr ...
- uboot、内核、根文件系统启动流程
[1]Uboot的启动流程 Uboot的启动分为两个阶段. 第一阶段:设置异常向量表,设置ARM核为svc模式,关cache和关mmu, 关看门狗,初始化时钟,串口,内存,初始化栈空间,清bss ...
- 如何破解Excel VBA密码
首先,如果文件格式是(.xslm),需要先打开Excel文件,另存为2003版格式(.xls). 然后用普通的文本编辑器(我用的是NotePad++)打开这个文件,注意文件类型选“所有文件”. 然后在 ...