<audio>
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
<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>
figure {
margin: 0;
}
ä¸è¿°ä¾åå±ç¤ºäº <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 åHTMLMediaElementAPI å建èªå·±çèªå®ä¹æ§ä»¶ã - ä¸ºäºæ´ç²¾ç¡®å°æ§å¶ä½ çé³é¢å
容ï¼
HTMLMediaElementä¼è§¦åå¤ç§ä¸åç äºä»¶ãè¿ä¹æä¾äºä¸ä¸ªæ¥çé³é¢è·åè¿ç¨çæ¹å¼ï¼ä½ å¯ä»¥æ¥çéè¯¯ææ£æµä»ä¹æ¶åå¯ä»¥å¼å§ææ¾ææä½ã - ä½ è¿å¯ä»¥ä½¿ç¨ Web Audio API ä»¥ä» JavaScript 代ç ç´æ¥çæåæçºµé³é¢æµï¼è鿵弿æ¾å·²åå¨çé³é¢æä»¶ã
<audio>å ç´ ä¸è½å<video>å ç´ ä¸æ ·éå 坿 é¢ï¼subtitleï¼æè¯´ææ é¢ï¼captionï¼ãæ´å¤æç¨çä¿¡æ¯åè§£å³æ¹æ³åè§ Ian Devlin ç WebVTT and Audioã
è§é¢åé³é¢å
容 æ°ææç¨æ¯ä¸ç¯å
³äºä½¿ç¨ HTML <audio> ç好æç« ã
ä½¿ç¨ CSS è®¾ç½®æ ·å¼
<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>
Download <a href="myAudio.mp3">MP3</a> or
<a href="myAudio.ogg" download="myAudio.ogg">OGG</a> audio.
</p>
</audio>
ææ¯æ»ç»
| å 容åç±» | æµå¼å
容ãçè¯å
容ãåµå
¥å
容ã妿宿
controls 屿§ï¼äº¤äºå
容å坿ç¥å
容ã
|
|---|---|
| å 许çå 容 |
妿å
ç´ æ¥æ |
| æ ç¾çç¥ | ä¸å 许ï¼å¼å§æ ç¾åç»ææ ç¾é½ä¸è½çç¥ã |
| å 许çç¶å ç´ | ä»»ä½è½å¤ä½ä¸ºå®¹å¨çå ç´ |
| éå¼ ARIA è§è² | 没æå¯¹åºçè§è² |
| å 许ç ARIA è§è² | application |
| DOM æ¥å£ | HTMLAudioElement |
è§è
| è§è |
|---|
| HTML > # the-audio-element > |