目錄
前面的话
HTML元素
API
方法
属性
事件
audio专有
首頁 web前端 html教學 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        
登入後複製

<audio controls autoplay loop muted src="song.mp3">   <source src="song.mp3" type="audio/mp3" /></audio>    
登入後複製

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

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

<video id="test" src="movie.mp4" width="280" height="200" poster="diejia.jpg"></video>
登入後複製

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

  为

media     规定媒体资源的类型(没有浏览器支持)src      规定媒体文件的URLtype      规定媒体资源的MIME类型
登入後複製

  常用类型

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

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

  使用

<video src="#">    video player not available.</video>
登入後複製

<audio src="#">    audio player not available.</audio>
登入後複製

  因为并非所有浏览器都支持所有媒体格式,所以可以指定多个不同的媒体来源。为此,不用在标签中指定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>
登入後複製

<audio>    <source src="audio.ogg" type="audio/ogg">    <source src="audio.mp3" type="audio/mp3">    audio player not available.</audio>
登入後複製

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

<audio controls="controls" height="100" width="100">    <source src="song.mp3" type="audio/mp3" />    <embed height="100" width="100" src="song.mp3" /></audio>
登入後複製

<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>
登入後複製

API

  HTML5 DOM为

方法

(1)canPlayType()

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

'probable':浏览器最可能支持该类型'maybe':浏览器也许支持该类型'':浏览器不支持该类型
登入後複製

//常用值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"
登入後複製

<audio id="audio" src="song.mp3"></audio>    <script>var audio = document.getElementById('audio');//probablyconsole.log(audio.canPlayType('video/ogg;codecs="theora,vorbis"'));</script>
登入後複製

(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>
登入後複製

(3)play()

  开始播放音频或视频

(4)pause()

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

<button onclick = 'audio.play();'>播放</button><button onclick = 'audio.pause();'>暂停</button><audio id="audio" src="myocean.mp3" controls></audio>    
登入後複製

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

属性

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

<只读>

(1)buffered

buffered.length//获取已缓冲范围的数量buffered.start(index)//获取某个已缓冲范围的开始位置buffered.end(index)//获取某个已缓冲范围的结束位置buffered.end(0)//获取当前已缓冲的秒数
登入後複製

<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>    
登入後複製

(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>    
登入後複製

(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>
登入後複製

(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);
登入後複製

(5)networkState

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

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

<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>    
登入後複製

(6)paused

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

paused:true;(已暂停)paused:false;(未暂停)    
登入後複製

<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>    
登入後複製

(7)played

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

played.length(获得音频或视频已播放范围的数量)played.start(index)(获得某个已播范围的开始位置)played.end(index)(获得某个已播范围的结束位置)
登入後複製

  [注意]首段已播范围的下标是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>
登入後複製

(8)readyState

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

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

<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>    
登入後複製

(9)seekable

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

seekable.length(获得音频或视频中可寻址范围的数量)seekable.start(index)(获得可寻址范围的开始位置)seekable.end(index)(获得可寻址范围的结束位置)
登入後複製

<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>
登入後複製

(10)seeking

seeking:true(用户正在寻址)seeking:false(用户没有在寻址)
登入後複製

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

<可读写>

(1)autoplay

autoplay:false(默认,不自动播放)autoplay:true(自动播放)
登入後複製

(2)controls

controls:false(默认,不显示控件)controls:true(显示控件)
登入後複製

(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>
登入後複製

(5)defaultMuted(只有chrome支持)

defaultMuted:true(初始静音)defaultMuted:false(默认,初始不静音)
登入後複製

audio.defaultMuted = true;
登入後複製

(6)muted

muted:true(静音)muted:false(不静音)
登入後複製

<button onclick="audio.muted = !audio.muted">音量开关</button><audio id="audio" src="http://7xpdkf.com1.z0.glb.clouddn.com/myocean.mp3" controls></audio>
登入後複製

(7)defaultPlaybackRate

defaultPlaybackRate:1(正常速度)defaultPlaybackRate:0.5(半速)defaultPlaybackRate:2(倍速)defaultPlaybackRate:-1(向后正常速度)defaultPlaybackRate:-0.5(向后半速)
登入後複製

var audio = document.getElementById('audio');setTimeout(function(){    audio.defaultPlaybackRate = 0.5;    audio.load();    },1000);
登入後複製

(8)playbackRate

playbackRate:1(正常速度)playbackRate:0.5(半速)playbackRate:2(倍速)playbackRate:-1(向后正常速度)playbackRate:-0.5(向后半速)
登入後複製

<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;}
登入後複製

(9)loop

loop:true(循环播放)loop:false(默认,不循环播放)
登入後複製

(10)preload

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

preload:auto;(一旦页面加载,则开始加载音频或视频)preload:metadata;(当页面加载后仅加载音频或视频的元数据)preload:none;(页面加载后不加载音频或视频)
登入後複製

  [注意]当设置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>
登入後複製

(12)volume

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

volume(取得为0-1,0为静音,1为最大,默认为1)    
登入後複製

<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>
登入後複製

事件

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

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

<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>
登入後複製

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

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

<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>
登入後複製

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

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

<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>
登入後複製

audio专有

  

var audio = new Audio('test.mp3');    
登入後複製

<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>
登入後複製

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

&gt; gt;的目的是什麼 元素? &gt; gt;的目的是什麼 元素? Mar 21, 2025 pm 12:34 PM

本文討論了HTML&lt; Progress&gt;元素,其目的,樣式和與&lt; meter&gt;元素。主要重點是使用&lt; progress&gt;為了完成任務和LT;儀表&gt;對於stati

&lt; datalist&gt;的目的是什麼。 元素? &lt; datalist&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:33 PM

本文討論了html&lt; datalist&gt;元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

&lt; meter&gt;的目的是什麼。 元素? &lt; meter&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:35 PM

本文討論了HTML&lt; meter&gt;元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了&lt; meter&gt;從&lt; progress&gt;和前

HTML5中跨瀏覽器兼容性的最佳實踐是什麼? HTML5中跨瀏覽器兼容性的最佳實踐是什麼? Mar 17, 2025 pm 12:20 PM

文章討論了確保HTML5跨瀏覽器兼容性的最佳實踐,重點是特徵檢測,進行性增強和測試方法。

如何使用HTML5表單驗證屬性來驗證用戶輸入? 如何使用HTML5表單驗證屬性來驗證用戶輸入? Mar 17, 2025 pm 12:27 PM

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

視口元標籤是什麼?為什麼對響應式設計很重要? 視口元標籤是什麼?為什麼對響應式設計很重要? Mar 20, 2025 pm 05:56 PM

本文討論了視口元標籤,這對於移動設備上的響應式Web設計至關重要。它解釋瞭如何正確使用確保最佳的內容縮放和用戶交互,而濫用可能會導致設計和可訪問性問題。

&lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? &lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? Mar 20, 2025 pm 06:05 PM

本文討論了&lt; iframe&gt;將外部內容嵌入網頁,其常見用途,安全風險以及諸如對象標籤和API等替代方案的目的。

Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Apr 04, 2025 pm 11:54 PM

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

See all articles