[40] [DFN[[[WebVTT]]]] は、[[動画]]や[[音声]]に対する[[字幕]]などの[[注釈]]を記述するための形式です。 [[HTML]] と共に利用するために開発されました。 * 仕様書 [REFS[ - [54] '''[CITE@en-US-x-hixie[WebVTT Standard]] ([TIME[2012-04-26 21:10:07 +09:00]] 版) ''' - [78] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-04-28 00:40:00 +09:00]] 版) ]REFS] [79] [[WebVTT]] の構文、意味、構文解析の方法は [[WebVTT]] 仕様で規定されていますが、 [[API]] や[[媒体要素]]の処理モデルとの絡みは [[HTML]] 仕様で規定されています。 * 構文 [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) := "" 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