Baseline Widely available *
<audio>
HTML å
ç´ ç¨äºå¨ææ¡£ä¸åµå
¥é³é¢å
容ã<audio>
å
ç´ å¯ä»¥å
å«ä¸ä¸ªæå¤ä¸ªé³é¢èµæºï¼è¿äºé³é¢èµæºå¯ä»¥ä½¿ç¨ src
屿§æè
<source>
å
ç´ æ¥è¿è¡æè¿°ï¼æµè§å¨å°ä¼éæ©æåéçä¸ä¸ªæ¥ä½¿ç¨ãä¹å¯ä»¥ä½¿ç¨ MediaStream
å°è¿ä¸ªå
ç´ ç¨äºæµå¼åªä½ã
<figure>
<figcaption>Listen to the T-Rex:</figcaption>
<audio controls src="/shared-assets/audio/t-rex-roar.mp3"></audio>
<a href="/shared-assets/audio/t-rex-roar.mp3"> Download audio </a>
</figure>
ä¸è¿°ä¾åå±ç¤ºäº <audio>
å
ç´ çåºæ¬ç¨æ³ãä¸ <img>
å
ç´ ç±»ä¼¼ï¼æä»¬å¨ src
屿§ä¸æ·»å äºåµå
¥åªä½çè·¯å¾ï¼ä¹å¯ä»¥ä½¿ç¨å
¶ä»å±æ§æ¥è§å®ä¸äºåè½ï¼ä¾å¦æ¯å¦èªå¨ææ¾ãæ¯å¦å¾ªç¯ææ¾ãæ¯å¦æ¾ç¤ºæµè§å¨çé»è®¤é³é¢æ§ä»¶ççã
卿µè§å¨ä¸æ¯æè¯¥å
ç´ æ¶ï¼ä¼æ¾ç¤º <audio></audio>
æ ç¾ä¹é´çå
容ä½ä¸ºåéã
该å ç´ å å« å ¨å±å±æ§ã
autoplay
å¸å°å¼å±æ§ï¼å£°æè¯¥å±æ§ï¼é³é¢ä¼å°½å¿«èªå¨ææ¾ï¼ä¸ä¼çå¾ æ´ä¸ªé³é¢æä»¶ä¸è½½å®æã
夿³¨ï¼ èªå¨ææ¾é³é¢ï¼ææå£°è§é¢ï¼å¯è½ä¼ç ´åç¨æ·ä½éªï¼æä»¥åºè¯¥å°½å¯è½é¿å ãå¦æä½ ä¸å®è¦æä¾èªå¨ææ¾åè½ï¼ä½ åºè¯¥å å ¥å¼å ³ï¼è®©ç¨æ·ä¸»å¨æå¼èªå¨ææ¾ï¼ãç¶èï¼å¦æéè¦å建ä¸äºåªä½å ç´ ï¼å ¶ææ¾æºç±ç¨æ·å¨ç¨å设置ï¼èªå¨ææ¾å°±ä¼å¾æç¨ãæ³äºè§£å¦ææ£ç¡®ä½¿ç¨èªå¨ææ¾ï¼å¯åè§æä»¬çèªå¨ææ¾æåã
controls
妿声æäºè¯¥å±æ§ï¼æµè§å¨å°æä¾ä¸ä¸ªå å«å£°é³ï¼ææ¾è¿åº¦ï¼ææ¾æåçæ§å¶é¢æ¿ï¼è®©ç¨æ·å¯ä»¥æ§å¶é³é¢çææ¾ã
crossorigin
æä¸¾å±æ§ å±ç¤ºé³é¢èµæºæ¯å¦å¯ä»¥éè¿ CORS å è½½ãæ¯æ CORS çèµæºå¯ä»¥è¢« <canvas>
å
ç´ å¤ç¨è䏿±¡æãå¯éå¼å¦ä¸ï¼
anonymous
å¨åéè·¨åè¯·æ±æ¶ä¸æºå¸¦éªè¯ä¿¡æ¯ãæ¢å¥è¯è¯´ï¼æµè§å¨å¨åéOrigin:
HTTP 请æ±é¦é¨æ¶å°ä¸æºå¸¦ cookieãX.509 å®å
¨ä»¤çãä¹ä¸ä¼æ§è¡ä»»ä½ HTTP åºæ¬è®¤è¯ã妿æå¡å¨æ²¡æç»äºæºç«ä¿¡ä»»ï¼ä¹å°±æ¯è¯´æ²¡æè®¾ç½® Access-Control-Allow-Origin:
ååºé¦é¨ï¼ï¼é£ä¹å¾çå°±è¢«è®¤ä¸ºæ¯æ±¡æçï¼å®å°±ä¼è¢«éå¶ä½¿ç¨ã
use-credentials
å¨åéè·¨åè¯·æ±æ¶æºå¸¦éªè¯ä¿¡æ¯ãæ¢å¥è¯è¯´ï¼å¨åéOrigin:
HTTP 请æ±é¦é¨æ¶å°æºå¸¦ cookieãå®å
¨ä»¤çã并䏿§è¡ HTTP åºæ¬è®¤è¯ã妿æå¡å¨æ²¡æç»äºæºç«ä¿¡ä»»ï¼éè¿è®¾ç½®Access-Control-Allow-Credentials:
ååºé¦é¨ï¼é£ä¹å¾çå°±è¢«è®¤ä¸ºæ¯æ±¡æçï¼å®å°±ä¼è¢«éå¶ä½¿ç¨ã卿ªæå®æ¶ï¼èµæºå°ä¸éè¿ CORS è¯·æ±æ¥è·åï¼ä¹å°±æ¯ä¸åé Origin:
请æ±é¦é¨ï¼ï¼ä»¥ä¿æ¤ <canvas>
å
ç´ ä¸æªæ±¡æçå
容ã妿éªè¯å¤±è´¥ï¼å®ä¼è¡¨ç°ç好å anonymous é项æ¯éä¸çãæ¥ç CORS settings attributes æ¥è·åæ´å¤ä¿¡æ¯ã
currentTime
读å currentTime
屿§å°è¿åä¸ä¸ªå精度浮ç¹å¼ï¼ç¨ä»¥æ æä»¥ç§ä¸ºåä½çå½åé³é¢çææ¾ä½ç½®ã妿é³é¢çå
æ°æ®ææ¶æ æ³è®¿é®ââè¿æå³çä½ æ æ³çç¥éåªä½çå¼å§ææç»æ¶é´ãè¿æ¶ï¼currentTime
ç¸å¯¹åºçï¼è½å¤è¢«ç¨äºæ¹åéæçæ¶é´ãå¦åï¼è®¾ç½® currentTime
å°è®¾ç½®å½åçææ¾ä½ç½®ï¼å¹¶ä¸ä¼èªå¨æå¯»å°åªä½çé£ä¸ªä½ç½®ï¼å¦æåªä½ç®åå·²ç»è¢«å è½½çè¯ã妿é³é¢æ¯ä»¥æµçå½¢å¼å è½½çï¼å¹¶ä¸æ°æ®è¶
åºäºåªä½çç¼å²åºï¼bufferï¼ï¼user agent å¯è½æ æ³è·åèµæºçæäºé¨åãå¦ä¸äºé³é¢çæ¶é´è½´å¯è½å¹¶éä» 0 ç§å¼å§ï¼æä»¥è®¾ç½® currentTime
å°ä¸ä¸ªå¼å§æ¶é´ä¹åçæ¶é´å¯è½ä¼å¤±è´¥ã举个ä¾åï¼å¦æé³é¢åªä½çæ¶é´è½´ä» 12 å°æ¶å¼å§ï¼æ currentTime
è®¾ç½®å° 3600 å°ä¼å°è¯æå½åææ¾ä½ç½®è®¾ç½®å°åªä½çå¼å§ä½ç½®ä¹åï¼ä»è导è´é误ãgetStartDate()
æ¹æ³è½å¤ç¨äºç¡®å®åªä½æ¶é´è½´çå¼å§ä½ç½®ã
disableRemotePlayback
å®éªæ§
è¿æ¯ä¸ä¸ªå¸å°å¼ï¼ç¨æ¥ç¦ç¨å¨è¿ç¨è®¾å¤ä¸è¿è¡è¿åº¦æ§å¶çè½åãè¿äºè®¾å¤éè¿æçº¿ï¼æ¯å¦ HDMI, DVIï¼ææ çº¿ææ¯ï¼æ¯å¦ Miracast, Chromecast, DLNA, AirPlay,ï¼æ¥ä¸ web è¿æ¥ã请åè this proposed specification æ¥è·åæ´å¤ä¿¡æ¯ã
夿³¨ï¼ å¨ Safari ä¸ï¼ä½ è½ä½¿ç¨ x-webkit-airplay="deny"
ä½ä¸ºå
åºæ¹æ¡ã
duration
åªè¯»
è¿æ¯ä¸ä¸ªåç²¾åº¦æµ®ç¹æ°ï¼ææäºé³é¢å¨æ¶é´è½´ä¸çæç»æ¶é´ï¼æ»é¿åº¦ï¼ï¼ä»¥ç§ä¸ºåä½ã妿å
ç´ ä¸æ²¡æåªä½ï¼æè
åªä½æ¯ä¸å¯ç¨çï¼é£ä¹ä¼è¿å NaN
ã妿åªä½æ¾ä¸å°ç¡®åçç»å°¾ï¼æ¯å¦ä¸ç¡®å®é¿åº¦çç´ææµï¼ç½ç»çµå°ï¼æè
æ¯éè¿ WebRTC è¿æ¥çæµï¼ï¼é£ä¹è¿ä¸ªå¼å°è¿å +Infinity
ã
loop
å¸å°å±æ§ï¼å¦æå£°æè¯¥å±æ§ï¼å°å¾ªç¯ææ¾é³é¢ã
muted
表示æ¯å¦éé³çå¸å°å¼ãé»è®¤å¼ä¸º false
ï¼è¡¨ç¤ºæå£°é³ã
preload
æä¸¾å±æ§ï¼è®©å¼åè èªè¡æèæ¥ç¤ºææµè§å¨ä½¿ç¨ä½ç§å è½½æ¹å¼ä»¥è¾¾å°æå¥½çç¨æ·ä½éªãå¯ä»¥æ¯ä»¥ä¸å±æ§ä¹ä¸ï¼
none
: 示æç¨æ·å¯è½ä¸ä¼ææ¾è¯¥é³é¢ï¼æè
æå¡å¨å¸æèçå¸¦å®½ï¼æ¢å¥è¯è¯´ï¼è¯¥é³é¢ä¸ä¼è¢«ç¼åï¼metadata
: 示æå³ä½¿ç¨æ·å¯è½ä¸ä¼ææ¾è¯¥é³é¢ï¼ä½è·åå
æ°æ® (ä¾å¦é³é¢é¿åº¦) è¿æ¯æå¿
è¦çãauto
: 示æç¨æ·å¯è½ä¼ææ¾é³é¢ï¼æ¢å¥è¯è¯´ï¼å¦ææå¿
è¦ï¼æ´ä¸ªé³é¢é½å°è¢«å è½½ï¼å³ä½¿ç¨æ·ä¸ææä½¿ç¨ãauto
屿§ãä¸åæµè§å¨ä¼æèªå·±çé»è®¤å¼ï¼è§è建议çé»è®¤å¼ä¸º metadata
ã夿³¨ï¼ autoplay
屿§çä¼å
级é«äº preload
ã妿 autoplay
被æå®ï¼æµè§å¨å°æ¾å¼å°å¼å§ä¸è½½åªä½ä»¥ä¾ææ¾ã
src
åµå
¥çé³é¢ç URLã该 URL åºéµä» HTTP access controls. è¿æ¯ä¸ä¸ªå¯é屿§ï¼ä½ å¯ä»¥å¨ audio å
ç´ ä¸ä½¿ç¨ <source>
å
ç´ æ¥æ¿ä»£è¯¥å±æ§æå®åµå
¥çé³é¢ã
audioprocess
ä¸ä¸ª ScriptProcessorNode
çè¾å
¥ç¼å²åºå·²ç»åå¤å¼å§å¤çã canplay
æµè§å¨å·²ç»å¯ä»¥ææ¾åªä½ï¼ä½æ¯é¢æµå·²å è½½çæ°æ®ä¸è¶³ä»¥å¨ä¸æåçæ
åµä¸é¡ºå©å°å
¶ææ¾å°ç»å°¾ï¼å³é¢æµä¼å¨ææ¾æ¶æå以è·åæ´å¤çç¼å²åºå
å®¹ï¼ canplaythrough
æµè§å¨é¢æµå·²ç»å¯ä»¥å¨ä¸æåçåæä¸å°åªä½ææ¾å°ç»æã complete
ä¸ä¸ª OfflineAudioContext
çæ¸²æå·²ç»ä¸æ¢ã durationchange
duration
屿§åçäºååã emptied
åªä½ç½®ç©ºã举个ä¾åï¼å½ä¸ä¸ªåªä½å·²ç»å è½½ï¼æé¨åå è½½ï¼çæ
åµä¸è¯è°ç¨ load()
æ¹æ³ï¼è¿ä¸ªäºä»¶å°±å°è¢«è§¦åã ended
ææ¾å°åªä½çç»æä½ç½®ï¼ææ¾åæ¢ã loadeddata
åªä½ç第ä¸å¸§å è½½å®æã loadedmetadata
å
æ°æ®å è½½å®æã pause
ææ¾æåã play
ææ¾å¼å§ã playing
å ä¸ºç¼ºå°æ°æ®èæåæå»¶è¿çç¶æç»æï¼ææ¾åå¤å¼å§ã ratechange
ææ¾é度ååã seeked
䏿¬¡è·å æä½ç»æã seeking
䏿¬¡è·å æä½å¼å§ã stalled
ç¨æ·ä»£çè¯å¾è·ååªä½æ°æ®ï¼ä½æ°æ®æå¤å°æ²¡æè¿å
¥ã suspend
åªä½å è½½æèµ·ã timeupdate
ç± currentTime
æå®çæ¶é´æ´æ°ã volumechange
é³éååã waiting
å ä¸ºææ¶æ§ç¼ºå°æ°æ®ï¼ææ¾æåã 使ç¨è¯´æ
æµè§å¨å¯¹ æä»¶ç±»å å é³é¢ç¼ç çæ¯æåæä¸åï¼ä½ å¯ä»¥ä½¿ç¨å
åµç <source>
å
ç´ æä¾ä¸åçææ¾æºãæµè§å¨ä¼ä½¿ç¨ç¬¬ä¸ä¸ªå®æ¯æçææ¾æºï¼
<audio controls>
<source src="myAudio.mp3" type="audio/mpeg" />
<source src="myAudio.ogg" type="audio/ogg" />
<p>
Your browser doesn't support HTML5 audio. Here is a
<a href="myAudio.mp4">link to the audio</a> instead.
</p>
</audio>
æä»¬æä¾äºå ¨é¢ç»è´ç é³é¢æä»¶ç±»åæå å è¿äºç±»åå¯ä»¥ä½¿ç¨çé³é¢ç¼ç ãæ¤å¤ï¼è¿æ è§é¢ç¼ç æ¯ææåã
å ¶ä»ä½¿ç¨è¯´æï¼
controls
屿§ï¼é³é¢ææ¾å¨ä¸ä¼å
嫿µè§å¨çé»è®¤æ§ä»¶ãä½ä½ å¯ä»¥ä½¿ç¨ JavaScript å HTMLMediaElement
API å建èªå·±çèªå®ä¹æ§ä»¶ãHTMLMediaElement
ä¼è§¦åå¤ç§ä¸åç äºä»¶ãè¿ä¹æä¾äºä¸ä¸ªæ¥çé³é¢è·åè¿ç¨çæ¹å¼ï¼ä½ å¯ä»¥æ¥çéè¯¯ææ£æµä»ä¹æ¶åå¯ä»¥å¼å§ææ¾ææä½ã<audio>
å
ç´ ä¸è½å <video>
å
ç´ ä¸æ ·éå 坿 é¢ï¼subtitleï¼æè¯´ææ é¢ï¼captionï¼ãæ´å¤æç¨çä¿¡æ¯åè§£å³æ¹æ³åè§ Ian Devlin ç WebVTT and Audioãè§é¢åé³é¢å
容 æ°ææç¨æ¯ä¸ç¯å
³äºä½¿ç¨ HTML <audio>
ç好æç« ã
<audio>
å
ç´ æ²¡æèªå¸¦çåºæè§è§æ ·å¼ï¼é¤é妿声æäº controls
屿§ï¼å伿¾ç¤ºæµè§å¨çé»è®¤æ§ä»¶ã
é»è®¤æ§ä»¶ç display
çé»è®¤å¼ä¸º inline
ãå°è¯¥å¼è®¾ä¸º block
é常ä¼å¯¹å®ä½åå¸å±æå¥½å¤ï¼é¤éä½ æ³å°æ§ä»¶æ¾å¨ææ¬åæç±»ä¼¼å
ç´ ä¸ã
ä½ å¯ä»¥ä½¿ç¨ä½ç¨äºæ´ä¸ªæ§ä»¶ç屿§æ¥ä¸ºå
¶è®¾ç½®æ ·å¼ãä¾å¦å¯ç¨ border
ãborder-radius
ãpadding
, margin
ççãä½ä½ ä¸è½è®¾ç½®é³é¢ææ¾å¨ä¸çå个ç»ä»¶ï¼å¦æ¹åæé®å¤§å°ãæ¹å徿 æåä½çï¼ãæ§ä»¶å¨ä¸åçæµè§å¨ä¸ä¹ææä¸åã
妿å¨è·¨æµè§å¨ä¸å¾å°ä¸è´çå¤è§åä½éªï¼ä½ éè¦å建èªå®ä¹æ§ä»¶ï¼èªå®ä¹æ§ä»¶å¯ä»¥æ ¹æ®ä½ ç鿱任æè®¾ç½®æ ·å¼ï¼è¿å¯ä»¥ä½¿ç¨ JavaScript å HTMLMediaElement
API æ¥è®¾ç½®æ´å¤åè½ã
è§é¢ææ¾å¨æ ·å¼åºç¡ æä¾äºä¸äºæç¨çæ ·å¼ææ¯ï¼è¿ç¯æç« å´ç» <video>
èåï¼ä½å¤§é¨åé½å¯ä»¥ç¨äº <audio>
ã
ä½ è½å¤éè¿ addtrack
å removetrack
äºä»¶æ¥æ£æµä½æ¶é³è½¨ä» <audio>
å
ç´ ä¸æ·»å åç§»é¤äºãç¶èï¼è¿äºäºä»¶å¹¶ä¸æ¯ç´æ¥ä¼ éç» <audio>
å
ç´ èªå·±çãç¸åï¼å®ä»¬æ¯åéç» <audio>
å
ç´ çHTMLMediaElement
ä¸çé³è½¨å表对象çãè¿äºå¯¹è±¡ä¸æ·»å è¿å
ç´ çé³è½¨ç±»åä¸ä¸å¯¹åºã
HTMLMediaElement.audioTracks
ä¸ä¸ª AudioTrackList
å
嫿æçåªä½å¯¹è±¡çé³è½¨ãä½ è½å¨ä¸º addtrack
äºä»¶æ·»å çå¬ï¼ä»¥å¨æ°é³è½¨æ·»å è¿å
ç´ æ¶è·å¾éç¥ã
HTMLMediaElement.videoTracks
å¨è¯¥ VideoTrackList
å¯¹è±¡ä¸æ·»å çå¬ï¼ä»¥å¨è§é¢è½¨é被添å è¿å
ç´ æ¶è·å¾éç¥ã
HTMLMediaElement.textTracks
å¨è¯¥ TextTrackList
å¯¹è±¡ä¸æ·»å çå¬ï¼ä»¥å¨æå轨é被添å è¿å
ç´ æ¶è·å¾éç¥ãï¼ä¹è®¸ç¨äºåå¹ï¼è¯è
çæµï¼
夿³¨ï¼ å°½ç®¡æ¯ <audio>
å
ç´ ï¼ä½å®ä¾ç¶æè§é¢ä»¥åæåç轨éå表ï¼å¹¶ä¸å®é
ä¸è½å¤ç¨æ¥å±ç¤ºè§é¢ï¼å°½ç®¡åºç¨æ¥å£ç使ç¨å¯è½æ¾å¾å¾å¤æªã
举个ä¾åï¼ä¸ºäºä¾¦æµä½æ¶é³è½¨ä»ä¸ä¸ª <audio>
å
ç´ ä¸æ·»å æè
ç§»é¤ï¼ä½ å¯ä»¥ä½¿ç¨å¦ä¸ä»£ç ï¼
var elem = document.querySelector("audio");
elem.audioTrackList.onaddtrack = function (event) {
trackEditor.addTrack(event.track);
};
elem.audioTrackList.onremovetrack = function (event) {
trackEditor.removeTrack(event.track);
};
è¿ä»½ä»£ç çå¬é³è½¨ä»ç®æ å ç´ ä¸æ·»å å é¤çäºä»¶ï¼å¹¶ä¸è°ç¨äºä¸ä¸ªè½¨éç¼è¾å¨ä¸çèæå½æ°ï¼æ¥ä»ç¼è¾å¨ä¸çå¯ç¨é³è½¨åè¡¨ä¸æ³¨ååç§»é¤é³è½¨ã
ä½ ä¹å¯ä»¥ä½¿ç¨ addEventListener()
æ¥çå¬ addtrack
å removetrack
äºä»¶ã
ä¸é¢çä¾åå±ç¤ºäºä½¿ç¨ <audio>
å
ç´ æ¥ææ¾ OGG æä»¶çç®åç¨æ³ãå®å°æ ¹æ® autoplay
屿§ç设置æ¥èªå¨ææ¾ââ妿页é¢å
è®¸ä½ è¿ä¹åçè¯ãå®åæ¶è¿å
å«ä¸ä¸ªå
åºå
容ï¼ä»¥é²æ¢æµè§å¨ä¸æ¯æ <audio>
å
ç´ ã
<!-- Simple audio playback -->
<audio src="AudioTest.ogg" autoplay>
Your browser does not support the <code>audio</code> element.
</audio>
妿æ³è·å¾æ´å¤ä¿¡æ¯ï¼å æ¬ä½æ¶èªå¨ææ¾çæï¼å¦ä½è·åèªå¨ææ¾æéï¼å¹¶ä¸éè¿ä½ç§æ¹å¼ï¼å¨ä½æ¶åºç¨èªå¨ææ¾ææ¯åéçï¼è¯·çæä»¬ç autoplay guideã
<audio> å ç´ ä¸ <source> å ç´è¿ä¸ªä¾åæåºäºå¨åµå¥ç <source>
å
ç´ ç src
屿§ä¸è®¾ç½®åµå
¥é³è½¨ï¼èéç´æ¥å¨ <audio>
å
ç´ ä¸è®¾ç½®ãéè¿è¿ç§æ¹æ³å¯ä»¥åæ¶å¨ type
屿§ä¸å
嫿件ç MIME ç±»åï¼è¿é叏徿ç¨ï¼å 为æµè§å¨å°±è½ç«å³å³çï¼èªå·±ç©¶ç«æ¯è½å¤ææ¾è¯¥æä»¶ï¼è¿æ¯ä¸å¨ä¸è½ææ¾çæä»¶ä¸æµªè´¹æ¶é´ã
<audio controls>
<source src="foo.wav" type="audio/wav" />
Your browser does not support the <code>audio</code> element.
</audio>
<audio> ä¸å¤ä¸ª <source> å
ç´
è¿ä¸ªä¾åå
å«äºå¤ä¸ª <source>
å
ç´ ã妿è½å¤ææ¾çè¯ï¼æµè§å¨å°±ä¼è¯å¾å»å 载第ä¸ä¸ª source å
ç´ ï¼Opus åç¼åï¼ï¼å¦æä¸è¡ï¼é£å°±éèæ±å
¶æ¬¡å»å 载第äºä¸ª (Vorbis åç¼å)ï¼æç»éå°äº MP3 æ ¼å¼ï¼
<audio controls>
<source src="foo.opus" type="audio/ogg; codecs=opus" />
<source src="foo.ogg" type="audio/ogg; codecs=vorbis" />
<source src="foo.mp3" type="audio/mpeg" />
</audio>
æ éç¢èè
è¯é³å½¢å¼çé³é¢å¿ 须忶æä¾æ é¢ï¼ä»¥åç¡®åæè¿°å ¶å å®¹çææ¬ãæ é¢ï¼Captionsï¼æ¯ç± WebVTT æ åå®ä¹çï¼å 许å¬åéç¢ç人群è½å¤éè¿ææ¾ï¼æåï¼è®°å½æ¥çè§£é³é¢å 容ãè½¬å½æåå 许é£äºéè¦é¢å¤æ¶é´ç人们ï¼ä»¥éåä»ä»¬çéåº¦åæ ¼å¼å顾记å½çå 容ã
å¦æä½¿ç¨èªå¨æ 颿å¡ï¼äººå·¥æ£æ¥çæå 容æ¯å¾éè¦çï¼è¿ç¡®ä¿äºæ é¢è½å¤åç¡®çæè¿°æºé³é¢ã
å¦ä½ä½ çç¨æ·ä»£çä¸ç <audio>
å
ç´ ä¸ç´æ¥æ¯æ WebVTTãä½ å¿
须寻æ¾ä¸ä¸ªæ¡æ¶æ¥ä¸ºä½ æä¾è¿ç§è½åï¼æè
èªå·±åä»£ç æ¥å±ç¤ºæ é¢ãä¸ä¸ªéæ©æ¯ä½¿ç¨ <video>
å
ç´ ï¼å®æ¯ä¸å®æ¯æ WebVTT çã
è¿é¶çæ¥è®²ï¼è¯é³ç坿 é¢åè½¬å½æååºè¯¥åæ¶æè¿°é³ä¹ä¸é³æï¼å 为å®ä»¬ä¹æ¯é³é¢çéè¦ä¿¡æ¯ï¼å å«äºæ 绪ä¸é³è°ã举ä¾åï¼å¨ä¸é¢ç WebVTT ä¸ï¼ä¸æ¬å·éæä¾äºå ³äºé³è°ä¸æ 绪çä¿¡æ¯ç»è§çè ï¼éè¿è¿ç§æ¹å¼ï¼ç»åºé³ä¹ï¼è¯è¨ä¹å¤ç声é³ï¼ä»¥åå¦ä¸äºè³å ³éè¦ç声é³çæè¿°ï¼è½å¤å¸®å©å»ºç«èµ·é³é¢çæ°å´ã
1 00:00:00 --> 00:00:45 [Energetic techno music] 2 00:00:46 --> 00:00:51 Welcome to the Time Keeper's podcast! In this episode we're discussing which Swisswatch is a wrist switchwatch? 16 00:00:52 --> 00:01:02 [Laughing] Sorry! I mean, which wristwatch is a Swiss wristwatch?
ç»åºå
¶ä»å
å®¹ï¼æ¯å¦ç´æ¥çä¸è½½é¾æ¥ï¼ä¹æ¯ä¸ç§æä½³å®è·µï¼è¿è½å¤ä½ä¸ºä¸ç§ç¨æ·æµè§å¨ä¸æ¯æ <audio>
å
ç´ æ¶çå
åºæ¹æ¡ã
<audio controls>
<source src="myAudio.mp3" type="audio/mpeg" />
<source src="myAudio.ogg" type="audio/ogg" />
<p>
Your browser doesn't support HTML5 audio. Here is a
<a href="myAudio.mp4">link to download the audio</a> instead.
</p>
</audio>
controls
屿§ï¼äº¤äºå
容å坿ç¥å
容ã å
许çå
容
妿å
ç´ æ¥æ src
屿§ï¼å
许çå
容为 0 ä¸ªææ´å¤ <track>
å
ç´ ï¼è·éçä¸å
å« <audio>
æ <video>
åªä½å
ç´ çéæå
容
å¦åï¼å
许çå
容为é¶ä¸ªæå¤ä¸ª <source>
å
ç´ ï¼è·éç 0 个æå¤ä¸ª <track>
å
ç´ ï¼è·éçä¸å
å« <audio>
æ <video>
åªä½å
ç´ çéæå
容ã
application
DOM æ¥å£ HTMLAudioElement
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4