[40] [DFN[[[WebVTT]]]] は、[[動画]]や[[音声]]に対する[[字幕]]などの[[注釈]]を記述するための形式です。
[[HTML]] と共に利用するために開発されました。
* 仕様書
[REFS[
- [54] [CITE@en-US-x-hixie[WebVTT Standard]] ([TIME[2012-04-26 21:10:07 +09:00]] 版)
]REFS]
* 構文
[66] [[WebVTT]] の構文は[[文脈依存言語]]と思われます。
** ABNF 風構文
[65] 構文を [[ABNF]] 風に表記すると次のようになります。なお、 [[WebVTT]]
の構文の要件は [[ABNF]] では表現できないので、次に示す構文は実際よりも緩い制約になっています。
[PRE(ABNF code)[
wsp := U+0020 / U+0009
file-body := [BOM] 'WEBVTT' wsp *(Char - wsp) 2*line-terminator [cue *(2*line-terminator cue)] *line-terminators
cue := [cue-identifier line-terminator] cue-timings 1*(wsp cue-settings) line-terminator cueue-payload
cue-payload := cue-text / chapter-title-text / metadata-text
line-terminator := U+000D U+000A / U+000A / U+000D
cue-identifier := 1*(Char - line-terminator) - (*Char "-->" *Char)
cue-timings := timestamp 1*wsp "-->" 1*wsp timestamp
digit := U+0030 .. U+0039
timestamp := [2*digit ":"] 2*digit ":" 2*digit "." 3*digit
cue-settings := [cue-setting *(1*wsp cue-setting)]
cue-setting := vertical-text-cue-setting / line-position-cue-setting / text-position-cue-setting / size-cue-setting / alignment-cue-setting
vertical-text-cue-setting := 'vertical:' ('rl' / 'rl')
line-position-cue-setting := 'line:' (relative-position / line-number)
relative-position := 1*digit "%"
line-number := ["-"] 1*digit
text-position-cue-setting := 'position:' relative-position
size-cue-setting := 'size:' 1*digit "%"
alignment-cue-setting := 'align:' ('start' / 'middle' / 'end')
metadata-text := [meta *(line-separator meta)]
meta := 1*(Char - line-separator)
chapter-title-text := [text *([line-separator] text)]
text := cue-text-span / cue-amp-escape / cue-lt-escape / cue-gt-escape / cue-lrm-escape / cue-rlm-escape / cue-nbsp-escape
cue-text := [cue-component *([line-separator] cue-component)]
cue-component := cue-class-span / cue-italics-span / cue-bold-span / cue-underline-span / cue-ruby-span / cue-voice-span / cue-timestamp / text
cue-internal-text := [line-terminator] *(cue-component [line-terminator])
cue-class-span := cue-span-start-tag('c') cue-internal-text cue-span-end-tag('c')
cue-italics-span := cue-span-start-tag('i') cue-internal-text cue-span-end-tag('i')
cue-bold-span := cue-span-start-tag('b') cue-internal-text cue-span-end-tag('b')
cue-underline-span := cue-span-start-tag('u') cue-internal-text cue-span-end-tag('u')
cue-ruby-span := cue-span-start-tag('ruby') 1*(cue-internal-text cue-span-start-tag('rt') cue-internal-text [cue-span-end-tag('rt')]) [line-terminator] *(wsp [line-terminator]) cue-span-end-tag('ruby')
cue-voice-span := cue-span-start-tag-annotated('v') cue-internal-text [cue-span-end-tag('v')]
cue-span-start-tag(tag-name) := "<" tag-name *("." class) ">"
cue-span-start-tag-annotated(tag-name) := "<" tag-name *("." class) wsp 1*(annotation) ">"
class := 1*(Char - (U+0009 / U+000A / U+000D / U+0020 / "&" / "<" / ">" / "."))
annotation := cue-span-start-tag-annotation-text / cue-amp-escape / cue-lt/escape / cue-gt-escape / cue-lrm-escape / cue-rlm-escape / cue-nbsp-escape
cue-span-end-tag(tag-name) := "" tag-name ">"
cue-timestamp := "<" timestamp ">"
cue-text-span := 1*(Char - (U+000A / U+000D / "&" / "<"))
cue-span-start-tag-annotation-text := 1*(Char - (U+000A / U+000D / "&" / ">"))
cue-amp-escape := '&'
cue-lt-escape := '<'
cue-gt-escape := '>'
cue-lrm-escape := ''
cue-rlm-escape := ''
cue-nbsp-escape := ' '
]PRE]
* HTML からの参照
[43] [[WebVTT]] [[文書]]は、[[HTML]] [[文書]]から [CODE(HTMLe)@en[[[track]]]]
[[要素]]により参照します。
* API
[75] 既存の [[WebVTT]] [[文書]]の参照は、[[スクリプト]]からも [CODE(HTMLe)@en[[[track]]]]
[[要素]]を操作することによって行えます。
[76] また [[WebVTT]] によって記述された [[cue]] も、[[テキスト・トラックAPI]]
により参照、操作できます。 [[cue]] を追加したり削除したりすることができます。
[77] [[テキスト・トラック]]自体も、 [CODE(DOMm)@en[[[addTextTrack]]]]
[[メソッド]]によって動的に生成することができます。
* 歴史
** WebSRT
[41] 当初は [[WHATWG]] により、 [[SRT]] に幾分の互換性のある [DFN[[[WebSRT]]]]
として開発されました。
[REFS[
-[1] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-05-04 11:13:56 +09:00]] 版)
-[2] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-05-05 19:14:57 +09:00]] 版)
-[3] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-05-06 06:06:01 +09:00]] 版)
-[4] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-05-07 08:32:25 +09:00]] 版)
-[5] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-05-07 08:32:38 +09:00]] 版)
-[6] [CITE[IRC logs: freenode / #whatwg / 20100506]]
([TIME[2010-06-03 08:41:05 +09:00]] 版)
-[7] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-26 11:33:35 +09:00]] 版)
-[8] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-26 11:35:00 +09:00]] 版)
-[9] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-26 11:35:21 +09:00]] 版)
-[10] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-29 21:32:38 +09:00]] 版)
-[11] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-29 21:32:53 +09:00]] 版)
-[12] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-30 07:13:55 +09:00]] 版)
-[13] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-30 07:14:15 +09:00]] 版)
-[14] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-30 22:34:18 +09:00]] 版)
-[15] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-06-30 22:34:36 +09:00]] 版)
-[16] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-01 07:48:18 +09:00]] 版)
-[17] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 00:58:19 +09:00]] 版)
-[18] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 07:52:55 +09:00]] 版)
-[19] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 07:53:08 +09:00]] 版)
-[20] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 07:53:19 +09:00]] 版)
-[21] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 07:54:08 +09:00]] 版)
-[22] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-02 21:12:45 +09:00]] 版)
-[23] [CITE[IRC logs: freenode / #whatwg / 20100630]]
([TIME[2010-07-05 08:14:40 +09:00]] 版)
-[24] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-07-17 01:33:27 +09:00]] 版)
-[25] [CITE[IRC logs: freenode / #whatwg / 20100702]]
([TIME[2010-07-18 00:28:05 +09:00]] 版)
-[26] [CITE[IRC logs: freenode / #whatwg / 20100705]]
([TIME[2010-07-19 12:21:38 +09:00]] 版)
-[29] [CITE['''['''whatwg''']''' Timed tracks for