ã¦ã§ãåç»ããã¹ããã©ã㯠(WebVTT) åç»ãé³å£°ãã©ãã¯ãªã©ã®ä»ã®ã¡ãã£ã¢ã¨æé軸ãåããã¦é ç½®ãããç¹å®ã®ããã¹ãããã¥ã¼ããæä¾ããããã¹ããã©ãã¯ã§ããWebVTT API ã¯ããããã®ããã¹ããã©ãã¯ãå®ç¾©ããæä½ããããã®æ©è½ãæä¾ãã¾ãã WebVTT API ã¯ä¸»ã«ãåç»ã³ã³ãã³ãã«éãã¦è¡¨ç¤ºãããåå¹ããã£ãã·ã§ã³ã®è¡¨ç¤ºã«ä½¿ç¨ããã¾ãããä»ã«ããããã²ã¼ã·ã§ã³ã容æã«ããããã®ãã£ãã¿ã¼æ å ±ã®æä¾ããé³å£°ãåç»ã³ã³ãã³ãã¨æé軸ãåããã¦é ç½®ããå¿ è¦ãããä¸è¬çãªã¡ã¿ãã¼ã¿ã®æä¾ãªã©ãä»ã«ãç¨éãããã¾ãã
æ¦å¿µã¨ä½¿ç¨æ¹æ³ããã¹ããã©ãã¯ã¨ã¯ãæéè»¸ã«æ²¿ã£ã¦é ç½®ãããããã¹ããã¼ã¿ãæ ¼ç´ããã³ã³ããã¼ã§ãæ åãé³å£°ãã©ãã¯ã¨ä¸¦è¡ãã¦åçãããã¨ã§ãã³ã³ãã³ãã®ç¿»è¨³ãæåèµ·ãããæ¦è¦ãæä¾ãããã¨ãã§ãã¾ãã åç»ãé³å£°ã®ã¡ãã£ã¢è¦ç´ ã¯ãç°ãªã種é¡ãè¨èªã®ãã©ãã¯ãå®ç¾©ãããã¨ãã§ããã¦ã¼ã¶ã¼ã¯å¥½ã¿ããã¼ãºã«å¿ãã¦é©åãªãã©ãã¯ã表示ãããã¨ãã§ãã¾ãã
æå®ã§ããããã¹ããã¼ã¿ã®ç¨®é¡ã¯ä»¥ä¸ã®ä¸è¦§ã«æ²è¼ããã¦ãã¾ãã ãã©ã¦ã¶ã¼ãããã¹ããã©ãã¯ã®ãã¹ã¦ã«å¯¾å¿ãã¦ããã¨ã¯éããªããã¨ã«æ³¨æãã¦ãã ããã
subtitles
ã¯ãé³å£°ã®ãã¤ã¢ãã°ã«ããã¹ã翻訳ãæä¾ãã¾ãã ããã¯æ¢å®ã®ããã¹ããã©ãã¯ã®åã§ããã使ç¨ããå ´åã¯ã½ã¼ã¹è¨èªãæå®ããå¿
è¦ãããã¾ããcaptions
ã¯ã話ãããããã¹ãã®æåèµ·ãããæä¾ãã鳿¥½ãèæ¯ã®é³ãªã©ãã®é³å£°ã«é¢ããæ
å ±ãè¨è¼ãããã¨ãã§ãã¾ãã ãããã¯è´è¦é害ã®ããã¦ã¼ã¶ã¼ã®ããã®ãã®ã§ããchapters
ã¯ãé«ã¬ãã«ãªããã²ã¼ã·ã§ã³æ
å ±ãæä¾ããã¦ã¼ã¶ã¼ãé¢é£ããã³ã³ãã³ãã«ç°¡åã«åãæ¿ããããããã«ãã¾ããmetadata
ã¯ãä»ã«ãããããæç³»åæ
å ±ã«ç¨ãããã¾ãããã©ãã¯å ã®æéè»¸ã«æ²¿ã£ã¦é ç½®ãããåã ã®ããã¹ããã¼ã¿ã®åä½ã¯ããã¥ã¼ãã¨å¼ã°ãã¾ãã åãã¥ã¼ã«ã¯éå§æå»ãçµäºæå»ãããã¹ãæ¬æãå«ã¾ãã¾ãã ã¾ãã表示é åãä½ç½®æå®ãé ç½®ããµã¤ãºã«å½±é¿ãä¸ããããã¥ã¼è¨å®ããæã¤ãã¨ãã§ãã¾ãã æå¾ã«ããã¥ã¼ã«ã¯ã©ãã«ãä»ãããã¨ãã§ããCSS ã¹ã¿ã¤ã«æå®ã®ããã«ãã¥ã¼ã鏿ããéã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
ããã¹ããã©ãã¯ã¨ãã¥ã¼ã¯ãWebVTT ãã¡ã¤ã«å½¢å¼ã使ç¨ãã¦ãã¡ã¤ã«å
ã§å®ç¾©ãããã®å¾ãç¹å®ã® <video>
è¦ç´ ã« <track>
è¦ç´ ã使ç¨ãã¦é¢é£ä»ãããã¾ãã
ãããã¯ãTextTrack
ã JavaScript ã§ HTMLMediaElement.addTextTrack()
ã使ç¨ãã¦ã¡ãã£ã¢è¦ç´ ã«ããã¹ããã©ãã¯ã追å ããåã
ã® VTTCue
ãªãã¸ã§ã¯ãã TextTrack.addCue()
ã«ãã£ã¦ãã©ãã¯ã«è¿½å ãããã¨ãã§ãã¾ãã
::cue
㯠CSS æ¬ä¼¼è¦ç´ ã§ãHTML 㨠WebVTT ãã¡ã¤ã«ã®ã©ã¡ãã§ã使ç¨ãããã¨ãã§ããç¹å®ã®è¦ç´ ããã¥ã¼å
ã®ç¹å®ã®ã¿ã°ãVTT ã¯ã©ã¹ãã¾ãã¯ç¹å®ã®ã©ãã«ãæã¤ãã¥ã¼ã®ã¹ã¿ã¤ã«ãè¨å®ãããã¨ãã§ãã¾ãã ::cue-region
æ¬ä¼¼è¦ç´ ã¯ãç¹å®ã®é åã®ãã¥ã¼ãã¹ã¿ã¤ã«è¨å®ããããã®ãã®ã§ãããã©ã®ãã©ã¦ã¶ã¼ã対å¿ãã¦ãã¾ããã
WebVTTã®æãéè¦ãªæ©è½ã¯ããã¡ã¤ã«å½¢å¼ã¾ãã¯ã¦ã§ã API ã使ç¨ãã¦ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
ã¤ã³ã¿ã¼ãã§ã¤ã¹VTTCue
ã¡ãã£ã¢è¦ç´ ã«é¢é£ä»ããããããã¹ããã©ãã¯ã®ç¹å®ã®æéæ ã«è¡¨ç¤ºãããããã¹ããã¤ã¾ããã¥ã¼ã表ãã¾ãã
VTTRegion
åç»è¦ç´ ã®ä¸é¨ã表ããVTTCue
ãã¬ã³ããªã³ã°ããããã¨ãããã¾ãã
TextTrack
ããã¹ããã©ãã¯ã表ããåçä¸ã«ãã¾ãã¾ãªãã¤ã³ãã§é¢é£ããã¡ãã£ã¢è¦ç´ ã¨ã¨ãã«è¡¨ç¤ºãããã¥ã¼ã®ãªã¹ããä¿æãã¾ãã
TextTrackCue
VTTCue
ãªã©ã®ãã¾ãã¾ãªãã¥ã¼åç¨ã®æ½è±¡ãã¼ã¹ã¯ã©ã¹ã§ãã
TextTrackCueList
é
å風ãªãã¸ã§ã¯ãã§ãTextTrackCue
ãªãã¸ã§ã¯ãã®åçã«æ´æ°ããããªã¹ãã表ãã¾ãã ãã®åã®ã¤ã³ã¹ã¿ã³ã¹ã¯ TextTrack.cues
ãããTextTrack
ãªãã¸ã§ã¯ãå
ã®ãã¹ã¦ã®ãã¥ã¼ãåå¾ããããã«åå¾ãã¾ãã
TextTrackList
ã¡ãã£ã¢è¦ç´ ã«å¯¾ãã¦å®ç¾©ãããããã¹ããã©ãã¯ã®ä¸è¦§ã表ããåãã©ãã¯ã¯ãä¸è¦§ã«å¥åã® TextTrack
ã¤ã³ã¹ã¿ã³ã¹ã¨ãã¦è¡¨ããã¾ãã
TrackEvent
HTML DOM API ã®ä¸é¨ã§ãTextTrackList
ã«ãã©ãã¯ã追å ããããåé¤ããããããã¨ãï¼ããä¸è¬çã«ã¯ãHTML ã®ã¡ãã£ã¢è¦ç´ ã«ãã©ãã¯ã追å ããããåé¤ããããããã¨ãï¼ã«çºçãã addtrack
ã¤ãã³ã㨠removetrack
ã¤ãã³ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãã
ãããã® CSS æ¬ä¼¼è¦ç´ ã¯ãVTT ãã©ãã¯ãæã¤ã¡ãã£ã¢ã®ãã¥ã¼ãã¹ã¿ã¤ã«ããããã«ä½¿ç¨ããã¾ãã
::cue
ã¡ãã£ã¢ã®ä¸ã§é¸æãããè¦ç´ å ã®ãã¥ã¼ã VTT ãã©ãã¯ã¨ç §åãã¾ãã
ã¡ã¢: ãã®ä»æ§ã§ã¯ãããä¸ã¤ã®æ¬ä¼¼è¦ç´ ã§ãã ::cue-region
ãå®ç¾©ãã¦ãã¾ãããããã¯ã©ã®ãã©ã¦ã¶ã¼ã対å¿ãã¦ãã¾ããã
次ã®ä¾ã§ã¯ãæ°ãã TextTrack
ãåç»ã«è¿½å ããTextTrack.addCue()
ã¡ã½ããã使ç¨ãã¦ã使ãã VTTCue
ãªãã¸ã§ã¯ãã弿°ã¨ãã¦ãã¥ã¼ã追å ãã¦ãã¾ãã
<video controls src="/shared-assets/videos/friday.mp4"></video>
CSS
video {
width: 420px;
height: 300px;
}
JavaScript
let video = document.querySelector("video");
let track = video.addTextTrack("captions", "Captions", "en");
track.mode = "showing";
track.addCue(new VTTCue(0, 0.9, "Hildy!"));
track.addCue(new VTTCue(1, 1.4, "How are you?"));
track.addCue(new VTTCue(1.5, 2.9, "Tell me, is the lord of the universe in?"));
track.addCue(new VTTCue(3, 4.2, "Yes, he's in - in a bad humor"));
track.addCue(new VTTCue(4.3, 6, "Somebody must've stolen the crown jewels"));
console.log(track.cues);
çµæ ãã¡ã¤ã«ã§å®ç¾©ããã VTT ã³ã³ãã³ãã®è¡¨ç¤º
ãã®ä¾ã§ã¯ãä¸è¨ã® WebVTT API ã使ç¨ãã¦ãã£ãã·ã§ã³ã追å ã®ä¾ã§è¦ãã®ã¨åãããããããåç»ã«è¨å®ããæ¹æ³ã示ãã¾ãããã ãä»åã¯ã<track>
è¦ç´ ã使ç¨ãã¦å®£è¨çã«è¡ãã¾ãã
ã¾ãã"captions.vtt" ãã¡ã¤ã«ã§ãã£ãã·ã§ã³ãå®ç¾©ãã¾ãã
WEBVTT 00:00.000 --> 00:00.900 Hildy! 00:01.000 --> 00:01.400 How are you? 00:01.500 --> 00:02.900 Tell me, is the lord of the universe in? 00:03.000 --> 00:04.200 Yes, he's in - in a bad humor 00:04.300 --> 00:06.000 Somebody must've stolen the crown jewels
ããã <video>
è¦ç´ ã« <track>
è¦ç´ ãç¨ãã¦è¿½å ãããã¨ãã§ãã¾ãã æ¬¡ã® HTML ã¯ååã¨åãããã¹ããã©ãã¯ã«ãªãã¾ãã
<video controls src="video.webm">
<track default kind="captions" src="captions.vtt" srclang="en" />
</video>
è¤æ°ã® <track>
è¦ç´ ã追å ãã¦ãkind
屿§ã¨ srclang
屿§ãç¨ããã¨ãè¤æ°ã®è¨èªã§ç°ãªã種é¡ã®ãã©ãã¯ãæå®ãããã¨ãã§ãã¾ããkind
ãæå®ããå ´åã¯ãsrclang
ãè¨å®ããªããã°ãªããªããã¨ã«æ³¨æãã¦ãã ããã default
屿§ã¯ 1 ã¤ã® <track>
ã ãã«è¿½å ãããã¨ãã§ãã¾ããããã¯ã¦ã¼ã¶ã¼ã®ç°å¢è¨å®ã§å
·ä½çãªè¨èªã種é¡ãæå®ããªãå ´åã«åçããããã®ã§ãã
<video controls src="video.webm">
<track default kind="captions" src="captions.vtt" srclang="en" />
<track kind="subtitles" src="subtitles.vtt" srclang="en" />
<track kind="descriptions" src="descriptions.vtt" srclang="en" />
<track kind="chapters" src="chapters_de.vtt" srclang="de" />
<track kind="subtitles" src="subtitles_en.vtt" srclang="en" />
</video>
HTML ã¾ãã¯ã¹ã¿ã¤ã«ã·ã¼ãã®ä¸ã® WebVTT ã®ã¹ã¿ã¤ã«è¨å®
WebVTT ãã¥ã¼ã¯ã::cue
æ¬ä¼¼è¦ç´ ã使ç¨ãã¦è¦ç´ ã¨ç
§åãããã¨ã§ãã¹ã¿ã¤ã«è¨å®ãããã¨ãã§ãã¾ãã ããã«ããããã¹ã¦ã®ãã¥ã¼ããã¹ãã®å¤è¦³ã夿´ãããã¨ããç¹å®ã®è¦ç´ ã ãã夿´ãããã¨ãã§ãã¾ãããã®ä¾ã§ã¯ãä¸è¨ã®æåã®ä¾ã«ã¹ã¿ã¤ã«è¨å®ã追å ãã¾ãã
ã¡ã¢: WebVTT ãã¡ã¤ã«å½¢å¼ã§ãã¹ã¿ã¤ã«ãå®ç¾©ãããã¨ãå¯è½ã§ãã
HTMLåç»èªä½ã® HTML ã¯ååã¨åãã§ãã
video {
width: 420px;
height: 300px;
}
<video controls src="/shared-assets/videos/friday.mp4"></video>
CSS
ã¾ãã::cue
æ¬ä¼¼è¦ç´ ã使ç¨ãã¦åç»ã®ãã¹ã¦ã®ããã¹ããã¥ã¼ã鏿ãã赤ã大ãããã¦èæ¯ãã°ã©ãã¼ã·ã§ã³ã«ãã¾ãã
video::cue {
font-size: 1.5rem;
background-image: linear-gradient(to bottom, yellow, lightyellow);
color: red;
}
次ã«ã::cue
ã使ç¨ãã¦ãu
è¦ç´ 㨠b
è¦ç´ ã使ç¨ãã¦ãã¼ã¯ã¢ãããããããã¹ãã鏿ããããããç·ã¨é»è²ã®ã¹ã¿ã¤ã«è¨å®ãè¡ãã¾ãã
video::cue(u) {
color: green;
}
video::cue(b) {
color: purple;
}
JavaScript
JavaScriptã¯æåã®ä¾ã¨åãã§ããã<b>
ã¿ã°ï¼å¤ªåï¼ã¨ <u>
ã¿ã°ï¼ä¸ç·ï¼ãç¨ãã¦ãã¥ã¼ããã¹ãã®ä¸é¨ããã¼ã¯ã¢ãããã¦ãã¾ãã æ¢å®ã§ã¯ããã¼ã¯ãããããã¹ãã¯å¤ªåã¾ãã¯ä¸ç·ï¼ã¿ã°ã«ãã£ã¦ç°ãªãï¼ã¨ãã¦è¡¨ç¤ºããã¾ãããåã®ã»ã¯ã·ã§ã³ã§ ::cue
ã使ç¨ãã¦ãããã¹ããããããç·è²ã¨ç´«è²ã«ã¹ã¿ã¤ã«è¨å®ãã¦ãã¾ãã
let video = document.querySelector("video");
let track = video.addTextTrack("captions", "Captions", "en");
track.mode = "showing";
track.addCue(new VTTCue(0, 0.9, "Hildy!"));
track.addCue(new VTTCue(1, 1.4, "How are you?"));
track.addCue(
new VTTCue(1.5, 2.9, "Tell me, is the <u>lord of the universe</u> in?"),
);
track.addCue(new VTTCue(3, 4.2, "Yes, he's in - in a bad humor"));
track.addCue(
new VTTCue(4.3, 6, "Somebody must've <b>stolen</b> the crown jewels"),
);
console.log(track.cues);
çµæ ãã£ã¨ã¹ã¿ã¤ã«è¨å®ããããã¥ã¼ã®ä¾
ãã®ä¾ã§ã¯ããã¥ã¼ããã¹ããã¿ã°ã§ãã¼ã¯ã¢ããããã¹ã¿ã¤ã«è¨å®ããæ¹æ³ã詳ãã示ãã¾ãã åããã¼ã¯ã¢ããã¨ã¹ã¿ã¤ã«è¨å®ã WebVTT ãã¡ã¤ã«å½¢å¼ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
åç»èªä½ã表示ããããã® HTML 㨠CSS ã¯ä¸è¨ã®æåã®ä¾ã¨åããªã®ã§ãããã§ã¯ããã¹ãã®ãã¼ã¯ã¢ããã¨ã¹ã¿ã¤ã«è¨å®ã®ããã®ç¹å®ã®ã³ã¼ãã®ã¿ã示ãã¾ãã
video {
width: 420px;
height: 300px;
}
<video controls src="/shared-assets/videos/friday.mp4"></video>
ã¿ã°ç¨®å¥ã«ããã¹ã¿ã¤ã«è¨å®
æåã«ä½æãããã¥ã¼ã¯ãåç»ã® 6 ç§éãã¹ã¦è¡¨ç¤ºãããb
ãu
ãi
ãc
ã¿ã°ã§ãã¼ã¯ã¢ãããããããã¹ãã表示ããã¾ãã
let video = document.querySelector("video");
let track = video.addTextTrack("captions", "Captions", "en");
track.mode = "showing";
track.addCue(
new VTTCue(
0,
6,
"ã¹ã¿ã¤ã«: æ¨æº <b>太å</b> <u>ä¸ç·</u> <i>æä½</i> <c>ã¯ã©ã¹</c>",
),
);
ã¾ãããã¹ã¦ã®ãã¥ã¼ãé常㮠1.2 åã®å¤§ããã«ããã«ã¼ã«ã追å ãã¾ãã
video::cue {
font-size: 1.2rem;
}
次ã«ãä¸è¨ã®ã¿ã°ãããããéãè²ã§ã¹ã¿ã¤ã«è¨å®ãã¾ãã
video::cue(u) {
color: green;
}
video::cue(b) {
color: purple;
}
video::cue(i) {
color: red;
}
video::cue(c) {
color: lavender;
}
ã¯ã©ã¹ã«ããã¹ã¿ã¤ã«è¨å®
2 ã¤ç®ã®ãã¥ã¼ã¯ãæåã®ãã¥ã¼ã®ç´å¾ã«è¡¨ç¤ºãããåãã¿ã°ãããã¾ãããããããã¹ã¦ myclass
ã¯ã©ã¹ãé©ç¨ããã¦ãã¾ãã
track.addCue(
new VTTCue(
1,
6,
"ã¹ã¿ã¤ã«: ã¯ã©ã¹ãã¼ã¯ã¢ãã: <b.myclass>太å</b> <u.myclass>ä¸ç·</u> <i.myclass>æä½</i> <c.myclass>ã¯ã©ã¹</c>",
),
);
c.myclass
ã®ç¹å®ã®ä»æ§ãé¤ãã¦ã.myclass
ã¯ã©ã¹ãæã¤ãã¹ã¦ã®ã¢ã¤ãã ãæ°´è²ã®æåè²ã§ã¹ã¿ã¤ã«è¨å®ãã¾ãã
video::cue(.myclass) {
color: lightblue;
}
video::cue(c.myclass) {
color: blue;
}
屿§ã使ç¨ããã¹ã¿ã¤ã«è¨å®
次㮠2 ã¤ã®ãã¥ã¼ã¯ 2 ç§å¾ã¨ 3 ç§å¾ã«è¡¨ç¤ºããã¾ãã æåã®ãã¥ã¼ã¯ lang
ã¿ã°ã§ãã¼ã¯ã¢ãããããè±èªã® 3 ã¤ã®ãã±ã¼ã«ã®ããã¹ãã表示ãã2 ã¤ç®ã¯ "Bob" 屿§ãæã¤ <v>
ï¼é³å£°ï¼ã¿ã°ã表示ãã¾ãã
track.addCue(
new VTTCue(
2,
6,
"<lang en>è¨èªãã¼ã¯ã¢ãã: 'en'</lang> <lang en-GB>ããã¹ã: 'en-GB'</lang> <lang en-US>ããã¹ã: 'en-US'</lang>",
),
);
track.addCue(new VTTCue(3, 6, "<v Bob>ããã®å£°</v>"));
lang
屿§ã»ã¬ã¯ã¿ã¼ã使ç¨ãã¦ãåè¨èªã«ç°ãªãæåè²ãä¸ãã¦ãã¾ãã
video::cue([lang="en"]) {
color: lightgreen;
}
video::cue([lang="en-GB"]) {
color: darkgreen;
}
video::cue(:lang(en-US)) {
color: #6082b6;
}
次ã«ãv
ã¿ã°ã¨ voice
ã®å±æ§ã»ã¬ã¯ã¿ã¼ã使ç¨ãã¦ã"ããã®å£°" ã®ããã¹ãããªã¬ã³ã¸è²ã«ãã¾ãã
video::cue(v[voice="Bob"]) {
color: orange;
}
çµæ
ä¾ã§ã¯ãä¸è¨ã®ã¹ã¿ã¤ã«è¨å®ã«ä¸è´ããè²ã§ãã¥ã¼ã表示ããå¿
è¦ãããã¾ãï¼ããã¹ãã«è²ãä»ãã¦ããªãå ´åã¯ããã©ã¦ã¶ã¼ã ::cue
ã«å¯¾å¿ãã¦ãã¾ããï¼ã
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