[2] [[媒体素片]]の[[次元]] [DFN[[CODE(URI)@en[[[t]]]]]] は、[[時間軸]]上の範囲を表します。

* 仕様書

[REFS[
- [1] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#fragment-dimensions>
- [4] '''[CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#naming-time>'''
- [21] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#valid-uri-temporal>
- [12] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#error-uri-general>
- [14] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#error-uri-temporal>
- [19] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#error-media-temporal>
- [23] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#media-fragment-display>
]REFS]

* 意味

[3] この[[次元]]は、元の[[媒体]]の特定の[RUBYB[時間範囲]@en[time range]]を表します [SRC[>>1]]。

[6] この範囲は half-open であり、開始時刻は範囲に含まれ、終了時刻は範囲に含まれない最初の瞬間となります [SRC[>>4]]。

[13] [CODE(URI)[[[id=]]]] と [CODE(URI)[[[t=]]]] は同じ[[次元]]を指定したものとみなされます。
両者が指定された場合、最後の指定のみが有効となります。 [SRC[>>12]]

* 構文

[37] 
名前は、 [CODE[t][t=]] です。

[38] 
[[MPEG DASH]] では、 [DFN[[CODE[s][s=]]]] も使われています。両方指定されている場合、
[CODE[s][s=]] が優先されます。 [SRC[>>35, >>36]]

-*-*-

[5] 値の時間の範囲は、開始時刻と終了時刻の[RUBYB[区間]@en[interval]]として表現します。
両者は [CODE(URI)[[[,]]]] で連結します。
どちらも省略可能で、それぞれ 0s と媒体の[RUBYB[時間長]@en[duration]]が既定値となります。 
[SRC[>>4]]

[FIG(railroad)[
= ?
== [CODE(URI)[[[npt:]]]]
= |
== =
=== 開始時刻
=== ?
==== [CODE(URI)[[[,]]]]
==== 終了時刻
== =
=== [CODE(URI)[[[,]]]]
=== 終了時刻
]FIG]

[7] 時刻は [[NPT]] ([[RFC 2326]] [[Normal Play Time]]) 形式で記述します
[SRC[>>4]]。これを明示するために値の最初に [CODE(URI)[npt:]]
と (小文字で) 記述できます [SRC[>>4]]。

;; [8] [[SMPTE時刻符号]]や[[実世界時計時刻]]による表現も検討されていたようです [SRC[>>4]] が、
仕様が完成しませんでした。

[9] [[NPT]] による時刻表記は、[[秒]]数のみ、 hh:mm:ss、mm:ss
のいずれかの形となります。いずれの表記でも[[秒]]部分の後に [CODE[[[.]]]]
と0桁以上の[[ASCII数字]]の列により、[[秒]]の[[小数部]]を表記できます。
[SRC[>>4]]

;; [10] [[秒]]の[[小数部]]は仕様書本文では[[ミリ秒]]を表すもの [SRC[>>4]] とされていますが、
構文上は桁数上限がありません。

[11] [[時]]、[[分]]、[[秒]]はいずれも[[ASCII数字]]の列ですが、[[分]]および[[分]]と併記する[[秒]]は00から59の間の2桁の[[ASCII数字]]とされています [SRC[>>4]]。

* 処理

[15] 構文的に正しくないものは、[RUBYB[[[誤り]]]@en[error]]であり、
当該[[次元]]の指定は無視する[['''べきです''']] [SRC[>>14]]。

[16] 終了時刻が開始時刻[[以下]]であるものは、[[誤り]]であり、
当該[[次元]]の指定は無視する[['''べきです''']] [SRC[>>14]]。

;; [17] 開始時刻と終了時刻が等しい場合、終了時刻は含まないため、
含まれる範囲が無くなってしまいますから、誤りです。

[20] なお、終了時刻を明示指定しなかった場合、時間長が指定されたとみなされます。
[[媒体]]に含まれる最後の時刻の直後の時刻を指定したことになるようです。
(最後の時刻を明示した場合、[[媒体]]の最後の瞬間が含まれないことになります。)

[18] [[媒体]]の[RUBYB[時間長]@en[duration]]と [[frame rate]] が分かっている場合、
範囲の妥当性も判定できます。開始時刻が媒体の最後の時刻[[以上]]である場合で、
終了時刻が媒体の最後の時刻''よりも''大きい場合は、
[[誤り]]であり、[[利用者エージェント]]は[[媒体]]の最後の時刻を[[シーク]]します。 [SRC[>>19]]

[22] 開始時刻が終了時刻より小さく、開始時刻が[[媒体]]の最初の時刻[[以上]]であり、
終了時刻が[[媒体]]の時間長[[以下]]なら、[[妥当]]であり、
開始時刻から終了時刻まで[[再生]]します [SRC[>>21]]。

[24] 開始時刻から[[再生]]を開始し、終了時刻で停止することが推奨されています [SRC[>>23]]。
停止後に再度「[RUBYB[[[再生]]]@en[play]]」ボタンが押された時は、その続きから再生を再開することとなります
[SRC[>>23]]。

[25] 「[RUBYB[再読み込み]@en[reload]]」ボタンを設け、それが押された時は、
指定された[[媒体素片]]のみ再度再生することが推奨されています [SRC[>>23]]。

[26] [[媒体素片]]で指定された範囲を強調して表示することもできます [SRC[>>23]]。

* 歴史

[28] [[NPT]] 以外の指定方法は削除されて[[W3C勧告]]本文には含まれていませんが、
[[ABNF]] 構文だけはなぜか削除されずに残っています [SRC[>>27]]。 

[REFS[
- [27] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/media-frags/#collected-syntax-uri>
]REFS]


[29] [CITE@en-US[Using HTML5 audio and video - Web developer guide | MDN]]
( ([TIME[2015-01-15 06:36:15 +09:00]] 版))
<https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video#Specifying_playback_range>

[30] [CITE@en[648595 – Implement temporal dimension portion of Media Fragments URI specification for video/audio]]
( ([TIME[2015-01-16 00:35:20 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=648595>

[31] [CITE[Issue 163351 - chromium - HTML5 Video media fragment URI wrong behaviour - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2015-01-16 00:40:55 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=163351>

[32] [CITE[Issue 94368 - chromium - Feature Request: Implement temporal dimension portion of Media Fragments URI specification for video/audio - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2015-01-16 00:53:16 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=94368>

[33] [CITE@en[Bug 65838 – Implement temporal dimension portion of Media Fragments URI specification for video/audio]]
( ([TIME[2015-01-16 00:54:13 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=65838>

[REFS[
- [34] <http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip>
]REFS]

[FIG(quote)[
[FIGCAPTION[
[SRC[>>34]]
]FIGCAPTION]

>
,*Key,*Value,*Semantics
,[CODE[t]],Time or time range in the same format as defined in Media Fragments URI 1.0,"Time since the beginning of the period indicated by the period parameter.  If the [CODE[t]] parameter is not present, its default value is 0."
]FIG]


[35] [CITE@en[dash.js/PlaybackController.js at master · Dash-Industry-Forum/dash.js]]
([TIME[2017-06-03 11:22:15 +09:00]])
<https://github.com/Dash-Industry-Forum/dash.js/blob/master/src/streaming/controllers/PlaybackController.js#L258>

[36] [CITE@en[Fix up startTime, support t as well as s, seeing as t is the standard.]]
([[LloydW93]]著, [TIME[2016-03-03 00:02:58 +09:00]])
<https://github.com/Dash-Industry-Forum/dash.js/pull/1390/commits/ae0f2ef978b79a1cb51a88b8780c38104a8315aa>

[39] [CITE@en[tc39/proposal-temporal]]
([TIME[2018-11-01 18:42:20 +09:00]])
<https://github.com/tc39/proposal-temporal>

[40] [CITE@en[Temporal proposal · Issue #311 · w3ctag/design-reviews]]
([TIME[2018-11-01 18:44:14 +09:00]])
<https://github.com/w3ctag/design-reviews/issues/311>