<track>ï¼åµå ¥ææ¬è½¨å ç´
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
<track> HTML å
ç´ ä½ä¸ºåªä½å
ç´ <audio> å <video> çåå
ç´ ä½¿ç¨ãæ¯ä¸ªææ¬è½¨å
ç´ å
è®¸ä½ æå®ä¸ä¸ªå®æ¶ææ¬è½¨ï¼æåºäºæ¶é´çæ°æ®ï¼ï¼å¯ä»¥ä¸åªä½å
ç´ å¹¶è¡æ¾ç¤ºï¼ä¾å¦å¨è§é¢ä¸å å å广éèå¼åå¹ï¼æä¸é³é¢è½¨ä¸èµ·æ¾ç¤ºã
å¯ä»¥ä¸ºä¸ä¸ªåªä½å ç´ æå®å¤ä¸ªè½¨éï¼å å«ä¸åç§ç±»ç宿¶ææ¬æ°æ®ï¼æä¸ºä¸ååºåç¿»è¯ç宿¶ææ¬æ°æ®ã使ç¨çæ°æ®å°æ¯å·²è®¾ç½®ä¸ºé»è®¤ç轨éï¼æè åºäºç¨æ·å好çç±»ååè¯è¨ç¿»è¯ã
è½¨éæ ¼å¼ä¸º WebVTT æ ¼å¼ï¼.vtt æä»¶ï¼ââWeb è§é¢ææ¬è½¨ã
å°è¯ä¸ä¸
<video controls src="/shared-assets/videos/friday.mp4">
<track
default
kind="captions"
srclang="en"
src="/shared-assets/misc/friday.vtt" />
Download the
<a href="/shared-assets/videos/friday.mp4">MP4</a>
video, and
<a href="/shared-assets/misc/friday.vtt">subtitles</a>.
</video>
video {
width: 250px;
}
video::cue {
font-size: 1rem;
}
屿§
æ¤å ç´ å å«å ¨å±å±æ§ã
default-
æ¤å±æ§è¡¨ç¤ºåºå¯ç¨è¯¥è½¨éï¼é¤éç¨æ·çå好表æå¦ä¸ä¸ªè½¨éæ´åéãæ¯ä¸ªåªä½å ç´ åªè½å¨ä¸ä¸ª
trackå ç´ ä¸ä½¿ç¨æ¤å±æ§ã kind-
ææ¬è½¨çä½¿ç¨æ¹å¼ã妿çç¥ï¼é»è®¤çç±»åæ¯
subtitlesã妿屿§å 嫿 æå¼ï¼åä¼ä½¿ç¨metadataãå 许使ç¨ä»¥ä¸å ³é®åï¼-
subtitles- å广ä¾è§ä¼æ æ³çè§£çå 容çç¿»è¯ãä¾å¦å¨è±è¯çµå½±ä¸ï¼éè±è¯çè¯è¨æææ¬ã
- åå¹å¯è½å å«é¢å¤çå 容ï¼é常æ¯é¢å¤çèæ¯ä¿¡æ¯ãä¾å¦ãæç大æãçµå½±å¼å¤´çæåï¼æåºæ¯çæ¥æãæ¶é´åå°ç¹ã
-
captions- éèå¼å广ä¾é³é¢çæåè®°å½ï¼å¹¶å¯è½å å«ç¿»è¯ã
- å®å¯è½å å«éè¦çéè¯è¨ä¿¡æ¯ï¼ä¾å¦é³ä¹æç¤ºæé³æãå®å¯è½è¡¨ç¤ºæç¤ºçæ¥æºï¼ä¾å¦é³ä¹ãææ¬ãè§è²ï¼ã
- éåå¬åéç¢ç¨æ·æå½å£°é³è¢«é鳿¶ä½¿ç¨ã
-
chapters- ç« èæ é¢ç¨äºç¨æ·æµè§åªä½èµæºæ¶ä½¿ç¨ã
-
metadata- ç±èæ¬å ç´ ä½¿ç¨ç轨éãå¯¹ç¨æ·ä¸å¯è§ã
-
label-
ç¨æ·å¯è¯»çææ¬è½¨æ é¢ï¼æµè§å¨å¨ååºå¯ç¨ææ¬è½¨æ¶ä½¿ç¨ã
src-
轨éï¼
.vttæä»¶ï¼çå°åãå¿ é¡»æ¯ä¸ä¸ªææç URLãå¿ é¡»æå®æ¤å±æ§ï¼å¹¶ä¸å ¶ URL å¼å¿ é¡»ä¸ææ¡£å ·æç¸åçæ¥æºââé¤étrackå ç´ çç¶å ç´<audio>æ<video>æcrossorigin屿§ã srclang-
è½¨éææ¬æ°æ®çè¯è¨ãå®å¿ é¡»æ¯ä¸ä¸ªææç BCP 47 è¯è¨æ ç¾ã妿
kind屿§è®¾ç½®ä¸ºsubtitlesï¼åå¿ é¡»å®ä¹srclangã
使ç¨è¯´æ
>è½¨éæ°æ®ç±»å
track æ·»å å°åªä½ä¸çæ°æ®ç±»åç± kind 屿§è®¾ç½®ï¼è¯¥å±æ§å¯ä»¥åå¼ subtitlesãcaptionsãchapters æ metadataã该å
ç´ æåä¸ä¸ªå
å«å®æ¶ææ¬çæºæä»¶ï¼å½ç¨æ·è¯·æ±éå æ°æ®æ¶ï¼æµè§å¨ä¼æ´é²è¯¥æä»¶ã
ä¸ä¸ªåªä½å
ç´ ä¸è½æå¤ä¸ªå
·æç¸å kindãsrclang å label ç trackã
æ£æµæç¤ºçåå
æ¯å½æ¾ç¤ºçæç¤ºï¼cueï¼åçååæ¶ï¼ç± track 屿§è¡¨ç¤ºçåºå± TextTrack é½ä¼æ¥æ¶å°ä¸ä¸ª cuechange äºä»¶ãå³ä½¿è½¨éæªå
³èåªä½å
ç´ ï¼ä¹ä¼åçè¿ç§æ
åµã
å¦æè½¨éä¸åªä½å
ç´ å
³èï¼å¹¶ä¸ <track> å
ç´ ä½ä¸º <audio> æ <video> å
ç´ çåå
ç´ ä½¿ç¨ï¼å cuechange äºä»¶ä¹ä¼åéå° HTMLTrackElementã
let textTrackElem = document.getElementById("text-track");
textTrackElem.addEventListener("cuechange", (event) => {
let cues = event.target.track.activeCues;
});
以ç¼ç¨æ¹å¼æ·»å ææ¬è½¨
表示 <track> å
ç´ ç JavaScript æ¥å£æ¯ HTMLTrackElementãä¸å
ç´ å
³èçææ¬è½¨å¯ä»¥éè¿ HTMLTrackElement.track 屿§è·åï¼å
¶ç±»å为 TextTrackã
TextTrack 对象ä¹å¯ä»¥ä½¿ç¨ HTMLMediaElement.addTextTrack() æ¹æ³æ·»å å° HTMLVideoElement æ HTMLAudioElementãä¸åªä½å
ç´ å
³èç TextTrack 对象åå¨å¨ TextTrackList ä¸ï¼å¯ä»¥éè¿ HTMLMediaElement.textTracks 屿§è·åã
示ä¾
<video controls poster="/images/sample.gif">
<source src="sample.mp4" type="video/mp4" />
<source src="sample.ogv" type="video/ogv" />
<track kind="captions" src="sampleCaptions.vtt" srclang="zh" />
<track kind="chapters" src="sampleChapters.vtt" srclang="zh" />
<track kind="subtitles" src="sampleSubtitles_de.vtt" srclang="de" />
<track kind="subtitles" src="sampleSubtitles_en.vtt" srclang="en" />
<track kind="subtitles" src="sampleSubtitles_ja.vtt" srclang="ja" />
<track kind="subtitles" src="sampleSubtitles_oz.vtt" srclang="oz" />
<track kind="metadata" src="keyStage1.vtt" srclang="zh" label="第 1 é¶æ®µ" />
<track kind="metadata" src="keyStage2.vtt" srclang="zh" label="第 2 é¶æ®µ" />
<track kind="metadata" src="keyStage3.vtt" srclang="zh" label="第 3 é¶æ®µ" />
<!-- åé -->
â¦
</video>
ææ¯æ¦è¦
| å 容åç±» | æ |
|---|---|
| å 许çå 容 | æ ï¼å®æ¯ç©ºå ç´ ã |
| æ ç¾çç¥ | å¿ é¡»æå¼å§æ ç¾ï¼ä¸ä¸è½æç»ææ ç¾ã |
| å 许çç¶å ç´ | |
| éå«ç ARIA è§è² | 没æå¯¹åºçè§è² |
| å 许ç ARIA è§è² | 没æå
许ç role |
| DOM æ¥å£ | HTMLTrackElement |
è§è
| è§è |
|---|
| HTML > # the-track-element > |