HTML5——音频audio与视频video

时间:2017-08-30 17:58:03   收藏:0   阅读:306

文件日志地址    http://blog.csdn.net/q1056843325/article/details/60336226

 

音频与视频现在已经变得越来越流行
各个网站为了保证跨浏览器的兼容性
仍然选择使用flash

技术分享
(源码截自优酷)

多媒体标签

使用

HTML5增加了audio与video两个多媒体标签
兼容性还不错,低版本IE不支持
可以使我们不需要使用任何浏览器插件就能够插入音频与视频控件
而且非常的简单

技术分享

技术分享
(源码截自Bilibili)

元素用法如下

标签中内容如果浏览器不支持该标签就会显示
当然使用这两个元素的时候
最起码要添加src属性,属性值就是资源的url

但是每个浏览器由于版权问题支持的媒体格式也不同
所以就可以使用下面的方式

<audio id="demoAudio">
    <source src="media/xi-Halcyon.mp3">
    <source src="media/xi-Halcyon.ogg">
    ...
    不支持H5-audio
</audio>

<video id="demoVideo">
    <source src="media/Animation.mp4">
    <source src="media/Animation.webm">
    ...
    不支持H5-video
</video>

这样指定不同的资源格式
也保证了各个浏览器的兼容性

属性

audio和video标签除了src外
还有一些公有的属性

属性描述
autoplay 设置该属性后,音/视频资源就绪后立即播放
controls 设置该属性后,则显示浏览器播放控制控件
loop 设置该属性后,则音/视频结束后重新循环开始播放
preload 设置该属性后,则音/视频在页面加载时进行加载,并预备播放(使用autoplay会忽略该属性)


前三个属性属性名与属性值相同,直接添加属性名即可
preload有如下属性值

比如想要在浏览器添加一段音乐
并且加载后立即播放,循环播放
使用浏览器的播放控件

技术分享

控件的样式各个浏览器都不一样
随着浏览器版本的更新,可能还会更新样式


video元素还有独有的属性poster
属性值是图片资源的url
用来设置视频播放前的一张占位图片

<video src="media/Animation.mp4" id="demoVideo" width="500" height="400" poster="images/preimg.jpg" controls></video>

技术分享


点击播放后,视频正常播放
技术分享

脚本化音视频

元素

使用js获取dom节点就很简单了

类似于image的Image构造函数
Audio也可以通过类似的方式创建(Video不可以)
区别在于Image创建的图片是要插入文档的
但是Audio不需要

然后可以为它添加autoplay、loop等属性
然后添加到页面

接口

在获取的DOM节点上可以使用浏览器提供的接口属性和方法
常用的属性、方法如下


除此之外还有

它们都是TimeRanges对象
每个对象都有一个length属性(表示当前时间段)
以及start()和end()方法(返回当前时间段的起始时间点和结束时间点,单位s)
start()和end()都有一个数字参数,表示第一个时间段
确定当前缓存内容百分比:


下面三个布尔属性表示媒体播放器的状态


并不是所有浏览器都支持video和audio的所有编解码器
canPlayType()方法就是用来鉴定时候支持某一格式的媒体资源
返回字符串maybe、probably或空字符串
如果只传入MIME类型,则返回maybe
如果同时传入MIME类型和编解码器,则返回probably(可能性增加了)
只是因为媒体文件只不过是音/视频的容器
真正决定文件能否播放的还得是编码格式


下面的状态位属性也了解一下

事件

除了接口属性方法以外
还有必不可少的事件模型
如果我们不想使用浏览器的控件而是定义自己的播放控制组件
就要使用这套事件了

初次之外还有很多事件
很多不常用
在w3c截了一张图

技术分享


通过接口与事件
也可以简单的实现自己简陋的音乐播放器

var audio = new Audio(‘media/xi-Halcyon.mp3‘);
var btn = document.getElementById(‘btn‘);
var vol = document.getElementById(‘vol‘);
var cur = document.getElementById(‘cur‘);
var dur = document.getElementById(‘dur‘);
var state = ‘pause‘;

vol.value = 100;
audio.onloadeddata = function(){
  dur.textContent = Math.floor(audio.duration) + ‘s‘;
}

setInterval(function(){
  cur.textContent = Math.floor(audio.currentTime) + ‘s‘;
}, 200);

btn.onclick = function(){
  if(state === ‘play‘){
    state = ‘pause‘;
    btn.textContent = ‘播放‘;
    audio.pause();
  }else{
    state = ‘play‘;
    btn.textContent = ‘暂停‘;
    audio.play();
  }
}


vol.oninput = function(){
  audio.volume = vol.value/100;
}

技术分享

原文:http://www.cnblogs.com/huchengming/p/7454318.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!