Table of Contents
前面的话
HTML元素
API
方法
属性
事件
audio专有
Home Web Front-end HTML Tutorial audio和video元素_html/css_WEB-ITnose

audio和video元素_html/css_WEB-ITnose

Jun 24, 2016 am 11:31 AM

目录 [1]HTML元素 audio video source [2]API 方法 属性 事件 audio专有

前面的话

  HTML5新增了两个与媒体相关的标签,让开发人员不必依赖任何插件就能在网页中嵌入跨浏览器的音频和视频内容,这两个标签是

    以视频文件举例,它包含了音频轨道、视频轨道和其他一些元数据(封面、标题、子标题、字幕等)

HTML元素

  使用这两个元素至少要在标签中包含src属性。位于开始和结束标签之间的任何内容都将作为后备内容,在浏览器不支持这两个媒体元素的情况下显示

 

autoplay         自动播放controls         显示控件loop             循环播放preload          音频在页面加载时进行加载,并预备播放(若使用autoplay,则忽略该属性)src              要播放的音频的URL        
Copy after login

<audio controls autoplay loop muted src="song.mp3">   <source src="song.mp3" type="audio/mp3" /></audio>    
Copy after login

  <演示框>点击下列相应属性值可进行演示

autoplay            自动播放controls            显示控件height            播放器高度width             播放器宽度loop                循环播放preload        视频在页面加载时进行加载,并预备播放(若使用autoplay,则忽略该属性)preload="none"//当页面加载后不载入视频preload="auto"//当页面加载后载入整个视频preload="meta"//当页面加载后只载入元数据src                 要播放的视频的URLposter            规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像    
Copy after login

<video id="test" src="movie.mp4" width="280" height="200" poster="diejia.jpg"></video>
Copy after login

  <演示框>点击下列相应属性值可进行演示

  为

media     规定媒体资源的类型(没有浏览器支持)src      规定媒体文件的URLtype      规定媒体资源的MIME类型
Copy after login

  常用类型

    视频 [1]video/ogg [2]video/mp4 [3]video/webm

    音频 [1]audio/ogg [2]audio/mpeg

  使用

<video src="#">    video player not available.</video>
Copy after login

<audio src="#">    audio player not available.</audio>
Copy after login

  因为并非所有浏览器都支持所有媒体格式,所以可以指定多个不同的媒体来源。为此,不用在标签中指定src属性,而是使用一个或多个元素

<video>    <source src="video.webm" type="video/webm; codecs='vp8,vorbis'">    <source src="video.ogg" type="video/ogg; codecs='theora,vorbis'">    <source src="video.mp4">    video player not available.</video>
Copy after login

<audio>    <source src="audio.ogg" type="audio/ogg">    <source src="audio.mp3" type="audio/mp3">    audio player not available.</audio>
Copy after login

  因为并非所有浏览器都支持

<audio controls="controls" height="100" width="100">    <source src="song.mp3" type="audio/mp3" />    <embed height="100" width="100" src="song.mp3" /></audio>
Copy after login

<video width="320" height="240" controls="controls">  <source src="movie.mp4" type="video/mp4" />  <object data="movie.mp4" width="320" height="240">    <embed src="movie.mp4" width="320" height="240" />  </object></video>
Copy after login

API

  HTML5 DOM为

方法

(1)canPlayType()

  检测浏览器是否能播放指定的音频或视频类型,返回值为下列之一:

'probable':浏览器最可能支持该类型'maybe':浏览器也许支持该类型'':浏览器不支持该类型
Copy after login

//常用值video/oggvideo/mp4video/webmaudio/mpegaudio/oggaudio/mp4video/ogg;codecs="theora,vorbis"video/mp4;codecs="avc1.4D401E,mp4a.40.2"video/webm;codecs="vp8.0,vorbis"audio/ogg;codecs="vorbis"audio/mp4;codecs="mp4a.40.5"
Copy after login

<audio id="audio" src="song.mp3"></audio>    <script>var audio = document.getElementById('audio');//probablyconsole.log(audio.canPlayType('video/ogg;codecs="theora,vorbis"'));</script>
Copy after login

(2)load()

  重新加载音频或视频元素,用于在更改src来源或其他设置后对音频或视频元素进行更新

<audio id="audio" src="song.mp3" autoplay controls></audio>    <script>    var audio = document.getElementById('audio');    audio.src = 'myocean.mp3';    audio.load();</script>
Copy after login

(3)play()

  开始播放音频或视频

(4)pause()

  暂停当前播放的音频或视频

<button onclick = 'audio.play();'>播放</button><button onclick = 'audio.pause();'>暂停</button><audio id="audio" src="myocean.mp3" controls></audio>    
Copy after login

  <演示框>点击下列相应属性值可进行演示

属性

  [注意]所有属性中,只有videoWidth和videoHeight是立即可用的,在音视频的元数据加载后,其他属性才可用

<只读>

(1)buffered

buffered.length//获取已缓冲范围的数量buffered.start(index)//获取某个已缓冲范围的开始位置buffered.end(index)//获取某个已缓冲范围的结束位置buffered.end(0)//获取当前已缓冲的秒数
Copy after login

<button>获取缓冲时间</button><audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>var oBtn = document.getElementsByTagName('button')[0];oBtn.onclick = function(){    alert(audio.buffered.end(0));}</script>    
Copy after login

(2)currentSrc

  返回当前音频或视频的URL

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>var audio = document.getElementById('audio');//http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3setInterval(function(){    console.log(audio.currentSrc);    },1000); </script>    
Copy after login

(3)ended

  返回音频或视频是否已结束

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>document.onclick = function(){    console.log(audio.ended);}    </script>
Copy after login

(4)duration

  返回当前音频或视频的长度(以秒计),如果未设置则返回NaN

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>//NaNconsole.log(audio.duration);//317.022041setTimeout(function(){ console.log(audio.duration);},1000);
Copy after login

(5)networkState

  返回音频或视频当前网络状态

networkState:0(尚未初始化)networkState:1(已选取资源,但并未使用网络)networkState:2(正在下载数据)networkState:3(未找到资源来源)
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>//3console.log(audio.networkState)//1document.onclick = function(){    console.log(audio.networkState);}</script>    
Copy after login

(6)paused

  返回音频或视频是否已暂停

paused:true;(已暂停)paused:false;(未暂停)    
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>console.log(audio.paused)document.onclick = function(){    console.log(audio.paused);}</script>    
Copy after login

(7)played

  已播范围是指音频或视频的时间范围。如果用户在音频或视频中跳跃,会获得多个播放范围

played.length(获得音频或视频已播放范围的数量)played.start(index)(获得某个已播范围的开始位置)played.end(index)(获得某个已播范围的结束位置)
Copy after login

  [注意]首段已播范围的下标是0

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>document.onclick = function(){    console.log(audio.played.end(0));}</script>
Copy after login

(8)readyState

  返回音频或视频的当前就绪状态

readyState:0(没有关于音频或视频是否就绪的信息)readyState:1(关于音频或视频就绪的元数据)readyState:2(关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧)readyState:3(当前及至少下一帧的数据是可用的)readyState:4(可用数据足以开始播放)
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>//0console.log(audio.readyState);//4document.onclick = function(){    console.log(audio.readyState);}</script>    
Copy after login

(9)seekable

  返回可寻址范围,可寻址范围是指用户在视频或音频中可寻址(移动播放位置)的时间范围。对于流视频,通常可以寻址到视频中的任何位置,即使其尚未完成缓冲

seekable.length(获得音频或视频中可寻址范围的数量)seekable.start(index)(获得可寻址范围的开始位置)seekable.end(index)(获得可寻址范围的结束位置)
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>document.onclick = function(){    console.log(audio.seekable.end(0));}</script>
Copy after login

(10)seeking

seeking:true(用户正在寻址)seeking:false(用户没有在寻址)
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>audio.onseeking = function(){    console.log(audio.seeking);    }    </script>
Copy after login

<可读写>

(1)autoplay

autoplay:false(默认,不自动播放)autoplay:true(自动播放)
Copy after login

(2)controls

controls:false(默认,不显示控件)controls:true(显示控件)
Copy after login

(3)crossOrigin

  设置或返回CORS设置

(4)currentTime

  设置或返回音频或视频的当前位置(以秒计)

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>var audio = document.getElementById('audio');document.onclick = function(){    console.log(audio.currentTime);        audio.currentTime = 5;    console.log(audio.currentTime);}; </script>
Copy after login

(5)defaultMuted(只有chrome支持)

defaultMuted:true(初始静音)defaultMuted:false(默认,初始不静音)
Copy after login

audio.defaultMuted = true;
Copy after login

(6)muted

muted:true(静音)muted:false(不静音)
Copy after login

<button onclick="audio.muted = !audio.muted">音量开关</button><audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio>
Copy after login

(7)defaultPlaybackRate

defaultPlaybackRate:1(正常速度)defaultPlaybackRate:0.5(半速)defaultPlaybackRate:2(倍速)defaultPlaybackRate:-1(向后正常速度)defaultPlaybackRate:-0.5(向后半速)
Copy after login

var audio = document.getElementById('audio');setTimeout(function(){    audio.defaultPlaybackRate = 0.5;    audio.load();    },1000);
Copy after login

(8)playbackRate

playbackRate:1(正常速度)playbackRate:0.5(半速)playbackRate:2(倍速)playbackRate:-1(向后正常速度)playbackRate:-0.5(向后半速)
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>var array = [-1,-0.5,0.5,1,2];var i = 0;var audio = document.getElementById('audio');document.onclick = function(){    audio.playbackRate = array[i];    console.log(audio.playbackRate);    i++;    i=i%5;}
Copy after login

(9)loop

loop:true(循环播放)loop:false(默认,不循环播放)
Copy after login

(10)preload

  设置或返回是否在页面加载后立即加载音频或视频

preload:auto;(一旦页面加载,则开始加载音频或视频)preload:metadata;(当页面加载后仅加载音频或视频的元数据)preload:none;(页面加载后不加载音频或视频)
Copy after login

  [注意]当设置autoplay时,该属性无效

(11)src

  设置或返回音频或视频的当前来源

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>console.log(audio.src);document.onclick = function(){    console.log(audio.src);    audio.src = 'http://7xpdkf.com1.z0.glb.clouddn.com/song.mp3';    audio.load();    console.log(audio.src);}    </script>
Copy after login

(12)volume

  设置或返回音频或视频的当前音量

volume(取得为0-1,0为静音,1为最大,默认为1)    
Copy after login

<button onclick = "if(audio.volume<=0.9)audio.volume+=0.1;">增大音量</button><button onclick = "if(audio.volume>=0.1)audio.volume-=0.1;">减小音量</button><audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio>
Copy after login

事件

  当音频或视频正在加载过程中,会依次发生以下事件:

loadstart:提示浏览器开始寻找指定的音频或视频progress:提示浏览器正在下载指定的音频或视频durationchange:提示音频或视频的时长已改变loadedmetadata:提示音频或视频的元数据已加载loadeddata:提示音频或视频的当前帧已加载,但没有足够数据播放下一帧canplay:提示浏览器能够开始播放指定的音频或视频canplaythrough:提示音频或视频能够不停顿地一直播放progress:提示浏览器正在下载指定的音频或视频
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio><script>    audio.onloadstart = function(){    console.log('loadstart');}audio.ondurationchange = function(){    console.log('durationchange');}    audio.onloadedmetadata = function(){    console.log('loadedmetadata');}    audio.onloadeddata = function(){    console.log('loadeddata');}    audio.onprogress = function(){    console.log('progress');}    audio.oncanplay = function(){    console.log('canplay');}    audio.oncanplaythrough = function(){    console.log('canplaythrough');}    </script>
Copy after login

  影响音频或视频数据加载的事件有以下几个:

abort:在音频或视频终止加载时触发error:在音频或视频加载发生错误时触发stalled:在浏览器尝试获取媒体数据,但数据不可用时触发suspend:在音频或视频数据被阻止加载时触发(可以是完成加载后触发,或者因为被暂停)<br />empted:在发生故障并且文件突然不可用时触发<br />
Copy after login

<video id="video" src="http://7xpdkf.com1.z0.glb.clouddn.com/movie.mp4" controls></video><script>setTimeout(function(){    video.src='';},2000);    video.onabort = function(){    console.log('abort');}video.onerror = function(){    console.log('error');}    video.onstalled = function(){    console.log('stalled');}    video.onsuspend = function(){    console.log('suspend');}    video.onemptied = function(){    console.log('emptied');}</script>
Copy after login

  音频或视频控制按钮发生改变时触发以下事件:

play:音频或视频文件已经就绪可以开始播放时触发playing:音频或视频已开始播放时触发ended:音频或视频文件播放完毕后触发pause:音频或视频文件暂停时触发ratechange:播放速度改变进触发seeked:指示定位已结束时触发seeking:正在进行指示定位时触发timeupdate:播放位置改变时触发[注意:播放和调整指示定位时都会触发]volumechange:音量改变时触发waiting:需要缓冲下一帧而停止时触发
Copy after login

<audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/honey.mp3" controls></audio><script>    var i = 1;document.onclick = function(){    i+=0.1;    audio.playbackRate = i;}audio.onended = function(){    console.log('ended');}audio.onpause = function(){    console.log('pause');}    audio.onplay = function(){    console.log('play');}    audio.onplaying = function(){    console.log('playing');}    audio.onratechange = function(){    console.log('ratechange');}    audio.onseeked = function(){    console.log('seeked');}    audio.onseeking = function(){    console.log('seeking');}    audio.ontimeupdate = function(){    console.log('timeupdate');}    audio.onvolumechange = function(){    console.log('volumechange');}    audio.onwaiting = function(){    console.log('waiting');}    </script>
Copy after login

audio专有

  

var audio = new Audio('test.mp3');    
Copy after login

<script>var audio = new Audio('http://7xpdkf.com1.z0.glb.clouddn.com/honey.mp3');audio.oncanplaythrough = function(){    audio.controls = true;    document.body.appendChild(audio);}</script>
Copy after login

 

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Difficulty in updating caching of official account web pages: How to avoid the old cache affecting the user experience after version update? Difficulty in updating caching of official account web pages: How to avoid the old cache affecting the user experience after version update? Mar 04, 2025 pm 12:32 PM

The official account web page update cache, this thing is simple and simple, and it is complicated enough to drink a pot of it. You worked hard to update the official account article, but the user still opened the old version. Who can bear the taste? In this article, let’s take a look at the twists and turns behind this and how to solve this problem gracefully. After reading it, you can easily deal with various caching problems, allowing your users to always experience the freshest content. Let’s talk about the basics first. To put it bluntly, in order to improve access speed, the browser or server stores some static resources (such as pictures, CSS, JS) or page content. Next time you access it, you can directly retrieve it from the cache without having to download it again, and it is naturally fast. But this thing is also a double-edged sword. The new version is online,

How do I use HTML5 form validation attributes to validate user input? How do I use HTML5 form validation attributes to validate user input? Mar 17, 2025 pm 12:27 PM

The article discusses using HTML5 form validation attributes like required, pattern, min, max, and length limits to validate user input directly in the browser.

What are the best practices for cross-browser compatibility in HTML5? What are the best practices for cross-browser compatibility in HTML5? Mar 17, 2025 pm 12:20 PM

Article discusses best practices for ensuring HTML5 cross-browser compatibility, focusing on feature detection, progressive enhancement, and testing methods.

How to efficiently add stroke effects to PNG images on web pages? How to efficiently add stroke effects to PNG images on web pages? Mar 04, 2025 pm 02:39 PM

This article demonstrates efficient PNG border addition to webpages using CSS. It argues that CSS offers superior performance compared to JavaScript or libraries, detailing how to adjust border width, style, and color for subtle or prominent effect

What is the purpose of the <datalist> element? What is the purpose of the <datalist> element? Mar 21, 2025 pm 12:33 PM

The article discusses the HTML &lt;datalist&gt; element, which enhances forms by providing autocomplete suggestions, improving user experience and reducing errors.Character count: 159

What is the purpose of the <meter> element? What is the purpose of the <meter> element? Mar 21, 2025 pm 12:35 PM

The article discusses the HTML &lt;meter&gt; element, used for displaying scalar or fractional values within a range, and its common applications in web development. It differentiates &lt;meter&gt; from &lt;progress&gt; and ex

How do I use the HTML5 <time> element to represent dates and times semantically? How do I use the HTML5 <time> element to represent dates and times semantically? Mar 12, 2025 pm 04:05 PM

This article explains the HTML5 &lt;time&gt; element for semantic date/time representation. It emphasizes the importance of the datetime attribute for machine readability (ISO 8601 format) alongside human-readable text, boosting accessibilit

What is the purpose of the <progress> element? What is the purpose of the <progress> element? Mar 21, 2025 pm 12:34 PM

The article discusses the HTML &lt;progress&gt; element, its purpose, styling, and differences from the &lt;meter&gt; element. The main focus is on using &lt;progress&gt; for task completion and &lt;meter&gt; for stati

See all articles