web前端入门到实战:HTML5的video和audio

从理论上来说,HTML5引入的<audio>和<video>元素,使用起来和<img>元素一样简单。对于支持HTML5的浏览器,不再需要使用插件(像flash)来在HTML文档中嵌入音频和视频:

<audio src="background_music.mp3"‘>
<video src="news.mov" width=320 height=240>

实际上,使用这些元素的时候要更加巧妙。由于各家浏览器制造商未能在对标准音频和视频编码支持上达成一致,因此,通常需要使用<source>元素来为指定不同格式的媒体源:

<audio id="music">
    <source src="music.mp3" type="audio/mpeg">
    <source src="music.ogg" type=‘audio/ogg;codec="vorbis"‘>
</audio>

常用媒体事件
<audio>和<video>元素最重要的方法是play()和pause()方法,它们用来控制媒体开始和暂停媒体的播放。
以音频为例:


web前端开发学习Q-q-u-n: 767273102 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频)
<audio id="music">
    <source src="music.mp3" type="audio/mpeg">
    <source src="music.ogg" type=‘audio/ogg;codec="vorbis"‘>
</audio>
let audio = document.getElementById(‘music‘)
//开始播放音频
audio.play()
//暂停播放音频
audio.pause()
    //监听暂停播放事件
    audio.addEventListener(‘pause‘, function (e) {
    console.log(‘暂停播放啦‘)
 })
//监听开始播放事件
audio.addEventListener(‘pause‘, function (e) {
    console.log(‘开始播放啦‘)
})
//监听媒体数据已经加载完成事件
audio.addEventListener(‘loadedmetadata‘, function (e) {
    console.log(‘音频时长:‘+e.target.duration)
});
//监听currentTime属性发生改变了
audio.addEventListener(‘timeupdate‘, function (e) {
    console.log(‘剩余播放时长:‘+(e.target.duration - e.target.currentTime))
}, false);
audio.addEventListener(‘ended‘, function (e) {
    console.log(‘播放完成啦‘)
}, false);

常用媒体属性
currentTime:该属性指定了播放器应该跳过播放的时间(单位为秒)
volume:该属性表示播放音量,介于0(静音)~1(最大音量)之间
muted:该属性表示是否设置为静音模式。若为true则会进入静音模式,若为false则会恢复之前指定的音量继续播放。
playbackRate:该属性用于指定媒体播放的速度。1.0表示正常速度,大于1则表示“快进”,0~1之间的值则表示“慢放”。
controls:该属性指定是否在浏览器中显示播放控件。若为true则显示控件,反之则隐藏控件。
loop:该属性指定媒体是否需要循环播放。若为true则表示需要循环播放,反之则表示播放到最后就停止。
proload:该属性指定在用户开始播放媒体前,是否或者多少媒体内容需要预加载。

“none”:表示不需要预加载数据
“metadata”:表示诸如时长、比特率、帧大小这样的元数据需要加载。(浏览器默认加载这些数据。)
“auto”:浏览器应当预加载它认为适量的媒体内容

autoplay:该属性指定当已经缓存足够多的媒体内容时是否需要自动开始播放。将该属性设置为true就等于告诉浏览器需要预加载媒体内容。

对web前端这门技术感兴趣的小伙伴可以加入到我们的学习圈来,工作第六个年头了,与大家分享一些学习方法,实战开发需要注意的细节。767-273-102 秋裙。从零基础开始怎么样学好前端。都是一群有梦想的人,我们可能在不同的城市,但我们会一起结伴同行前端前端前端

常用媒体状态

duration:该属性指定了媒体的时长,单位是秒
played:该属性返回已经播放的时间段。
buffered:该属性返回当前已经缓冲的时间段。
seekable:该属性返回当前播放器需要跳到的时间段。
played,buffered,seekable都是TimeRanges对象。每个对象都有一个length属性以及start()和end()方法,前者表示当前的一个时间段,后者分别返回当前时间段的起始时间点和结束时间点(单位都是秒)。
readyState:该属性返回音频/视频的当前就绪状态

常量 描述
HAVE_NOTHING 0 没有关于音频/视频是否就绪的信息
HAVE_METADATA 1 音频/视频已初始化
HAVE_CURRENT_DATA 2 数据已经可以播放(当前位置已经加载) 但没有数据能播放下一帧的内容
HAVE_FUTURE_DATA 3 当前及至少下一帧的数据是可用的(换句话来说至少有两帧的数据)
HAVE_ENOUGH_DATA 4 可用数据足以开始播放-如果网速得到保障 那么视频可以一直播放到底

networkState :属性表示在网络上获取媒体的当前状态

常量 描述
NETWORK_EMPTY 0 还没有数据。并且 readyState 的值是 HAVE_NOTHING。
NETWORK_IDLE 1 HTMLMediaElement 是有效的并且已经选择了一个资源,,但是还没有使用网络。
NETWORK_LOADING 2 浏览器正在下载 HTMLMediaElement 数据。
NETWORK_NO_SOURCE 3 没有找到 HTMLMediaElement src。

error:描述加载媒体或者播放媒体过程中发生的错误。如没有发生错误,则为null;反之,则为一个对象,包含了描述错误的数组code属性。同时,error对象也定义了一些描述可能的错误代码的常量:

常量 描述
MEDIA_ERR_ABORTED 1 用户要求浏览器停止加载媒体内容
MEDIA_ERR_NETWORK 2 媒体类型正确,但是发生了网络错误导致无法加载
MEDIA_ERR_DECODE 3 媒体类型正确,但是由于编码错误导致无法正常解码和播放
MEDIA_ERR__NOT_SUPPORTED 4 通过src属性指定的媒体文件浏览器不支持,无法播放

原文地址:https://blog.51cto.com/14568129/2442292

时间: 2024-10-07 15:56:24

web前端入门到实战:HTML5的video和audio的相关文章

web前端入门到实战:css选择器和css文本样式相关

[文章来源微信公众号:每天学编程]---关注,后台领取编程资源 css基础-css选择器和css文本样式相关: 使用link链入外部样式,页面加载时会同时加载样式 @import url("*.css");使用导入式,页面加载完后,才会加载样式 链接伪类的顺序 :link-> :visited ->:hover-> :active 或者 : visited -> : link ->:hover-> :active 选择器的优先级: id选择器>

web前端入门到实战:异步加载CSS最简单的实现方式

我们想提高网页性能的最有影响力的措施之一,就是以不延迟网页渲染的方式加载CSS. 在默认情况下,浏览器在加载CSS时将终止页面的样式呈现(同步加载),也就是加载CSS会阻塞DOM树的渲染(但并不会阻塞DOM树的构建),可以简单理解为:当在加载CSS的同时,也在构建DOM树,只是没有应用上样式. 渲染流程 简单过一遍浏览器渲染的流程: 加载HTML资源 解析HTML 加载CSS资源,同时构建DOM树 解析CSS,同时渲染DOM树 当CSS文件过大,就会停留在第3步,所以网速慢时,打开网站的时候经常

web前端入门到实战:纯HTML做出几个实用网页效果

在我们以往看到的页面效果中,很多效果是需要JS搭配使用的,而今天在本文中,我将介绍如何使用纯HTML打造属于自己的实用效果. 1.?**折叠手风琴** 使用Details和Summary标签可以创建没有JavaScript代码的可折叠手风琴. 效果: ? HTML <details> <summary>Languages Used</summary> <p>This page was written in HTML and CSS. The CSS was

web前端入门到实战:纯css实现输入框placeholder动效及输入校验

背景 话不多说,我们能否用纯css实现以下效果: 答案是肯定的. 借助css:placeholder-shown :valid :invalid伪类及html5 input pattern 属性就可以实现,:placeholder-shown伪类目前兼容性如下: 直接上代码! html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="vie

web前端入门到实战:HTML规范新内容,HTML6 真正需要的功能

HTML5 规范在 2014 年正式发布.时至今日,虽然这一规范已经引入了许多新的 API.功能和改进,但许多开发人员已经在展望下一代 HTML 规范了. 一点点背景介绍 有些人还是不知道 HTML 标准是怎样制定出来的.具体来说,一些组织提出自己的模式和协议,希望浏览器接受并使用它们:但很显然,唯一真正有话语权的组织是 W3C .所以 W3C 来分析 Web 世界需要什么,然后他们编写并规划一些语言指南,这些指南最后将成为浏览器的标准. 早在 Internet Explorer 时代 W3C

web前端入门到实战:CSS实现平行四边形布局效果

如何实现下图所示的平行四边形布局效果? 一.skewX的局限 一提到平行四边形,条件反射般的就会想起CSS transform中的skew()/skewX()/skewY()方法,可以让元素斜切,从而实现平行四边形效果 HTML如下: <div class="input-x"> <input class="input" placeholder="您的姓名"> </div> CSS如下,形状的关键就是下面红色高亮

web前端入门到实战:CSS:scroll-snap滚动事件停止及元素位置检测

一.Scroll Snap是前端必备技能 CSS Scroll Snap是个非常好用的特性,可以让网页容器滚动停止的时候,无需任何JS代码的参与,浏览器可以自动平滑定位到指定元素的指定位置.类似幻灯片广告效果就可以纯CSS实现. 而且CSS Scroll Snap的兼容性非常好,移动端几乎可以放心使用. 二.源自实际项目的scroll-snap场景 今天下午在实现一个功能需求的时候,正好遇到一个场景非常适合使用Scroll Snap来实现,滑动依次显示人物角色.于是就大胆使用了下,哇,好棒,无需

web前端入门到实战:CSS自定义属性+CSS Grid网格实现超级的布局能力

最近我还注意到的一件事就是CSS自定义属性.CSS自定义属性的工作方式有点像SASS和其他预处理器中的变量,主要的区别在于其它方法都是在浏览器中编译后生成,还是原本的CSS写法.CSS自定义属性是真正的动态变量,可以在样式表中或使用javascript即时更新,这使得它们具有更多的可能性.如果你熟悉JavaScript,我喜欢把预处理器变量和CSS自定义属性之间的区别想象成与const和let之间的区别相似--它们都有不同的用途. CSS自定义属性可以方便的实现很多功能(例如主题变化).最近我一

web前端入门到实战:CSS实现页面翻转 正反两面展示不同的内容

要点: 1 页面旋转使用css3的rorateY(180deg) 实现页面的翻转 2 使用backface-visibility 实现正面元素翻转之后背面不可见,显示出反面的元素 demo: html <div> <div>反面的内容</div> <div>正面的内容</div> </div> css web前端开发学习Q-q-u-n: 767273102 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项