[5] [DFN[[RUBYB[[[媒体素片]]]@en[Media Fragments]]]]は、[[動画]]や[[音声]]の一部を識別するための[[素片識別子]]の構文です。

* 仕様書

[REFS[
- [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/>'''
-- [9] [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/#standardisation-URI-fragments>
-- [11] [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/#standardisation-URI-queries>
-- [13] [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-query>
-- [24] [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-syntax>
-- [33] [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-processing>
-- [45] [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-semantics>
-- [55] [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-clients>
- [78] <http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip>
]REFS]

[93] [TIME[2012年][year:2012]]に基本部分に絞って[[W3C勧告]]になったものの、
その後メンテナンスもされずに放置されています。

* 意味

[79] [[媒体素片]]は、[[媒体]]の時間的・空間的な位置や範囲を表します。

** MPD Anchor

[68] [[MPEG-DASH]] ([[ISO/IEC 23009-1]]) の C.4 には [[MPEG DASH]] 
([CODE(MIME)@en[[[application/dash+xml]]]]) の[[素片識別子]]である [DFN[[[MPD Anchor]]]]
の定義があります。

[76] [[MPD Anchor]] は実質的に[[媒体素片]]の独自拡張ですが、なぜか
[CODE(URI)@en[[[t=]]]] の値を除きすべて独自に規定しています。

[77] [[MPD Anchor]] は、表現開始する時刻と状態を表します [SRC[>>78]]。

* 構文

[25] [[媒体素片]]は、名前と値を [CODE(URI)[[[=]]]] で連結した組を1つ[[以上]]
[CODE(URI)[[[&]]]] で区切ったリストです。ただし [CODE(URI)[[[=]]]] と値なしで名前だけの組も含められます。
[SRC[>>24]]

[FIG(railroad)[
[FIGCAPTION[
[[媒体素片]]
]FIGCAPTION]
= 名前と値
= *
== [CODE(URI)[[[&]]]]
== 名前と値
]FIG]

[FIG(railroad)[
[FIGCAPTION[
名前と値
]FIGCAPTION]
= 名前
= ?
== [CODE(URI)[[[=]]]]
== 値
]FIG]

[26] 名前と値は、任意の [[Unicode]] 文字列を [[UTF-8]]
で[[符号化]]し、[[パーセント符号化]]したものです。
ただし名前に [CODE(URI)[[[&]]]] と [CODE(URI)[[[=]]]] を使うことはできず、
値に [CODE(URI)[[[&]]]] を使うことはできません。 [SRC[>>24]]

;; [27] [[RFC 3986]] が参照されており [SRC[>>24]]、 
[[URI]] で使えない[[文字]]は[[パーセント符号化]]しなければならず、
それ以外は[[パーセント符号化]]してもしなくても良いと思われます。

;; [28] [CODE(URI)[[[&]]]] や [CODE(URI)[[[=]]]] を名前や値に含めたい時は、
[[パーセント符号化]]すれば良いようです。

;; [46] 名前や値の部分には [CODE(URI)[[[:]]]] のような記号が含まれることもありますが、
それも含めて[[パーセント符号化]]してもしなくても同義であり、
どちらも[RUBYB[妥当]@en[valid]]です [SRC[>>45]]。

[29] 名前は[[次元]]を表し、値はそれに対応する値を表します。
値の構文は、[[次元]]の規定によります。 [SRC[>>24]]

;; [80] [[MPD Anchor]] はなぜか本文で [CODE[,]] 区切りと規定していますが、
仕様書中の例はすべて [CODE[&]] を使っています。

;; [81] [[MPD Anchor]] は [CODE[=]] で名前と値を区切ること以外ほとんど何も規定していません
(それでも [[MPEG DASH]] は[[国際標準]]です)。

* 構文解析

[34] [[媒体素片]]を解釈する場合には、 [[URL]] の一部として与えられた[[オクテット列]]を
[CODE(URI)[[[&]]]] によって区切ったリストとして分割し、
その各要素を [CODE(URI)[[[=]]]] によって区切った名前と値の組として分割し、
名前と値をそれぞれ[[パーセント復号]]します。 [SRC[>>33]]

;; [36] [CODE(URI)[[[=]]]] が複数あれば、最初のもので分割します。
また [CODE(URI)[[[=]]]] がなければ、値なしとします。

;; [37] [CODE(URI)[[[&]]]] だけが区切りであり、 [CODE(URI)[[[;]]]]
は区切りではありません。また [CODE(URI)[[[+]]]] は [CODE[0x20]] ではありません。

[35] ただし [CODE(URI)[[[=]]]] で分割した名前と値が[[パーセント符号化]]された[[オクテット列]]として正しくない場合や、
[[パーセント復号]]した結果が [[UTF-8]] で[[復号]]できない場合には、
その名前と値の組は無視します。 [SRC[>>33]]

;; [38] 同じ名前がリスト中に複数含まれることもあります。

;; [83] [[MPD Anchor]] は構文解析の方法を規定していません。

* 次元

[30] [DFN[[RUBYB[次元]@en[dimension]]]]は[[媒体素片]]において一部分を選択する観点を表しています。
[[次元]]は互いに論理的に独立しており、組み合わせることができます [SRC[>>24]]。
[[次元]]の順序に関わらず、得られる結果は同じです [SRC[>>24]]。

;; [44] [CODE(URI)[[[t]]]] と [CODE(URI)[[[id]]]] が共に[[時間]][[次元]]を表すなど、
例外はあります。

[31] 次の[[次元]]があります。
[FIG(short list)[
- [CODE(URI)@en[[[as=]]]]
- [CODE(URI)@en[[[id=]]]]
- [CODE(URI)@en[[[t=]]]]
- [CODE(URI)@en[s=]]
- [CODE(URI)@en[[[track=]]]]
- [CODE(URI)@en[[[xywh=]]]]
- [CODE(URI)@en[[[period=]]]]
- [CODE(URI)@en[[[-moz-resolution=]]]]
- [CODE(URI)@en[[[-moz-samplesize=]]]]
- [CODE(URI)@en[xyr=]]
- [CODE(URI)@en[xyn=]]
]FIG]

;; [82] [[媒体素片]]本体仕様では [CODE(URI)@en[[[t=]]]],
[CODE(URI)@en[[[xywh=]]]] が定義されています。

;; [69] [[MPD Anchor]] では [CODE(URI)@en[[[t=]]]], [CODE(URI)@en[[[period=]]]],
[CODE(URI)@en[[[as=]]]], [CODE(URI)@en[[[track=]]]] が定義されています [SRC[>>78]]。

[41] 同じ[[次元]]を複数指定することは禁止されていません。
[[利用者エージェント]]は最後の指定を使う[['''べきです''']] [SRC[>>45, >>33]]。
それ以外は[[妥当]]であれ[[非妥当]]であれ、無視するべきです [SRC[>>45]]。

;; [48] ただし例外的に [CODE(URI)[[[track=]]]] は複数指定できます [SRC[>>45]]。
([CODE(URI)[[[track=]]]] 参照。)

[42] 未対応の[[次元]]がある場合、[[利用者エージェント]]は無視しなければなりません。
[[検証器]]は警告するべきです。 [SRC[>>33]]

[47] [[利用者エージェント]]は、未知の[[次元]]の指定を無視する[['''べきです''']]
[SRC[>>45]]。

;; [49] >>42 と >>47 が同じ意図の規定なのかどうか不明です。 >>47 はなぜか [['''SHOULD''']]
でしかありません。

[50] 適用対象の[[MIME型]]が分かっていれば、[[次元]]の存在に関する妥当性を判断できます。
静止画に対する時刻の指定のように当該[[媒体]]に存在しない[[次元]]が指定されていれば、
その[[次元]]の指定は無視する[['''べきです''']] [SRC[>>45]]。

[51] 各[[次元]]ごとに構文と意味、処理方法の規定があります。
ある[[次元]]の指定が[[妥当]]でなければ、無視されることがあります。
(しかしそれだけによって[[媒体素片]]全体が無視されるわけではありません。)

;; 各[[次元]]の項を参照。

;; [54] 値は[[妥当]]なものと[RUBYB[[[誤り]]]@en[error]]のものがあります。
どう処理するかはそれぞれ規定されていますが、基本的には無視されます。
[[誤り]]には構文的なものや機械的に決定できるものもあれば、
当該[[媒体]]の情報を得ていないと誤っているか判断のつかないもの
(例えば[[媒体]]の長さより大きな値を指定したエラー) があります。

* MIME 型

[8] [[媒体素片]]が適用される対象となる[[MIME型]]について、
[[媒体素片]]仕様書は、各[[MIME型]]の仕様が採用することを[RUBYB[推奨]@en[recommend]]
[SRC[>>9]] するにとどめており、実際に特定の [[MIME型]]に適用できるとはしていません。

[FIG(corollary)[
[10] [CODE(MIME)@en[[[audio/*]]]], [CODE(MIME)@en[[[image/*]]]], 
[CODE(MIME)@en[[[video/*]]]] の[[MIME型]]は[[媒体素片]]を採用することを[RUBYB[推奨]@en[recommend]]されています
[SRC[>>9]]。
]FIG]

[66] 実際上は[[媒体要素]]の実装で [CODE(URI)[[[t=]]]] が使われていますから、
[[媒体要素]]で利用される[[MIME型]]に関しては[[媒体素片]]が採用されていると言えます。

[84] [CODE(MIME)@en[[[application/dash+xml]]]] は [[MPD Anchor]]
を採用しています [SRC[>>78]]。ただし [[MPD Anchor]] は[[媒体素片]]とはされていません
(実質的には[[媒体素片]]ですが)。

* query での利用

[12] [[媒体素片]]は[[素片識別子]]だけでなく、[[query]] として使うこともできます。
しかし一般に [[HTTP]] や [[RTSP]] では [[query]] は[[鯖]]が任意の方法で解釈することとなっており、
[[媒体素片]]の仕様も [[query]] で用いることを強制はしていません。
[[鯖]]は[[媒体素片]]と既存の [[query]] とを調和させることを[RUBYB[推奨]@en[recommend]]される
[SRC[>>11]] にとどまっています。

[16] [[媒体素片]]によって表される[[資源]]の部分の中には、
[[包含子]]の形式と[[コーデック]]に依存して「[RUBYB[なじむ]@en[fit]]」
ものとそうでないものがあります。ここで「なじむ」とは、
元の[[資源]]の構文要素を変更したり、ビット列を[[転符号化]]したりせずに求める部分を取り出せることをいいます。 [SRC[>>13]]

[17] 「なじむ」ものは[[素片識別子]]によって表すこともできますが、
「なじまない」ものは [[query]] によって表すしかありません [SRC[>>13]]。
[[query]] によって指定された場合は、[[鯖]]が適宜[[符号化]]し直すなどして求める部分を返すことになります。

* 処理

[14] [[媒体素片]]の[[素片識別子]]の適用後の[[素片]]と元の[[資源]]は同じ
[[MIME型]]であるべきです [SRC[>>13]]。

[EG[
[15] 例えば[[動画]]のうちの1つの[[フレーム]]を識別する[[媒体素片]]によって得られるのは[[静止画]]ではなく、
[[フレーム]]が1つの[[動画]]であるべきです [SRC[>>13]]。
]EG]

[18] [[媒体素片]]が[[素片識別子]]として指定された場合、
[[利用者エージェント]]は元の[[資源]]を取得し、
そこから[[媒体素片]]で指定された部分を取り出すこととなります。
[[利用者エージェント]]の機能と[[資源]]の形式次第では、
元の[[資源]]の必要となる範囲を特定してそこだけ[[鯖]]から取得することができるかもしれません。
また、[[媒体素片]]を[[鯖]]に送信して処理を委ねる方法を用意することも想定はされています
[SRC[>>13]] (が実際にはありません)。

[EG[
[19] 例えば[[動画形式]]によっては[[動画]]上の範囲と[[バイト範囲]]との対応関係の索引データが含まれていて、
それに従い[[範囲要求]]を使って必要な部分だけ取得できるかもしれません [SRC[>>13]]。
]EG]

[22] [[媒体素片]]が [[query]] として指定された場合、
[[鯖]]は元の[[資源]]から[[媒体素片]]で指定された部分を取り出し、
必要な変換を施して新しい[[資源]]として[[利用者エージェント]]に返すこととなります
[SRC[>>13]]。[[バイト列]]として一部分を取り出すだけでは不十分で、
当該データ形式において適切な形式で完全な[[資源]]として、
必要なら再[[符号化]]も行った上で返すことになります。

;; [23] 例えば 30s から 70s までの範囲のような[[媒体素片]]が指定されたとしても、
返される[[資源]]の開始位置は 0s で終了位置は 40s になります。
また新しい[[資源]]と元の[[資源]]の関係は明確にはなっていません。 [SRC[>>13]]
ですから通常は指定範囲の外に[[シーク]]することもできません。
データ形式によっては、あるいは[[プロトコル]]の拡張によって元の[[資源]]との関係や元の[[資源]]における新しい[[資源]]の範囲がどこであるかを明示できるかもしれません
[SRC[>>13]] が、[[媒体素片]]の仕様の範囲ではそのような仕組みは用意されていないようです。

[39] [[媒体素片]]は、構文解析した後、リストに含まれる各名前と値の組を、
名前によって示された[[次元]]の仕様に基づき、指定された順に解釈します [SRC[>>33]]。

;; [40] 同じ[[次元]]が複数指定された場合には、最後の指定が最終的に有効になります [SRC[>>33]]。

[53] [[次元]]ごとに処理の方法やエラーの場合に無視することが規定されています。

;; [52] 各[[次元]]の項も参照。

[32] [[次元]]によっては、条件次第で[[媒体素片]]全体を無視するよう求めている場合があります。

;; [CODE(URI)[[[xywh]]]] 参照。

[56] [CODE(URI)[[[t=]]]], [CODE(URI)[[[id=]]]], [CODE(URI)[[[track=]]]]
の選択をまず [[container]] のレベルで行い、次に
[CODE(URI)[[[xywh=]]]] の選択を [[codec]] のレベルで行うことが期待されています [SRC[>>55]]。

-*-*-

[60] [[HTML Standard]] は[[媒体要素]]の処理の方法を規定していますが、
[[媒体]]の [[URL]] に指定が含まれる場合にそれに従って[[トラック]]を選択したり、
開始時刻を決定したりしても良いと規定しており、
そのような指定の例として[[媒体素片]]を挙げています。

[57] [[媒体素片]]が指定された [[URL]] が埋め込まれる場面の[[マーク付け言語]]などの側でも範囲の選択の指定がある場合にどう処理するべきかは、
埋め込まれる場面の側で規定するべきである [SRC[>>55]] として、[[媒体素片]]としては決められていません。
しかし、一般に[[媒体素片]]を適用した結果が単独の[[媒体]]である場合のように更に場面側の指定を適用するのがよい
[SRC[>>55]] 旨の記載もあります。

* 例

[EG[
[85] [[MPD Anchor]] の例 [SRC[>>78]]

>42[SUP[nd]] minute of Period1
>[CODE[my.mpd# t=42&period=Period1]]

;; [[空白]]は[[ママ]]

>42[SUP[nd]] minute from the start of the presentation, English 5.1 audio and video
>[CODE[my.mpd#t=42&track=en51&track=vid]]

>Set of Adaptation Sets from starting from the start of Period1
>[CODE[my.mpd#period=Period1&group=123]]
]EG]

[EG[
[74] [[MPD Anchor]] の例 [SRC[>>73]]

>
[PRE(code)[
#period=programme_part_2&t=50:00
]PRE]
]EG]

* 歴史

[1]
[CITE@en[W3C Media Fragments Working Group]] ([TIME[2008-08-15 22:39:44 +09:00]] 版) <http://www.w3.org/2008/WebVideo/Fragments/>

[2] [CITE@en-us[Use cases and requirements for Media Fragments]] ([TIME[2009-05-01 02:03:22 +09:00]] 版) <http://www.w3.org/TR/2009/WD-media-frags-reqs-20090430/>

[6] [CITE@en-us[Media Fragments URI 1.0]]
([TIME[2009-12-16 20:09:16 +09:00]] 版)
<http://www.w3.org/TR/2009/WD-media-frags-20091217/>

[20] [CITE[IRC logs: freenode / #whatwg / 20091229]]
([TIME[2010-01-06 07:47:25 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20091229>

[63] [CITE@en-us[Media Fragments URI 1.0]] ([TIME[2012-01-03 18:18:45 +09:00]] 版) <http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/>

[61] [CITE@en[Bug 12425 – User interface of temporal media fragment URI in @src of video element]] ([TIME[2015-01-16 00:37:12 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=12425>

[65] [CITE@en-us[Media Fragments URI 1.0 Implementation Report]] ([TIME[2012-01-22 21:16:09 +09:00]] 版) <http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-impl/>

[3] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/2012/REC-media-frags-20120925/>

[58] [CITE@en[Errata in Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-20 23:21:49 +09:00]] 版) <http://www.w3.org/2008/WebVideo/Fragments/errata/media-frags-20120925-errata>

[21] [CITE@en[Re: is spec complete?]]
( ([[Silvia Pfeiffer]] 著, [TIME[2013-06-11 07:32:04 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-media-fragment/2013Jun/0002.html>

[43] 次の機能は「basic」には含まれず、未完成のまま放置されています。
[FIG(short list)[
- [[次元]] [CODE(URI)[[[t]]]] の[[単位]] [CODE(URI)[[[smtpe]]]]
- [[次元]] [CODE(URI)[[[t]]]] の[[単位]] [CODE(URI)[[[clock]]]]
- [[次元]] [CODE(URI)[[[id]]]]
- [[次元]] [CODE(URI)[[[track]]]]
- [[HTTP]] による解決
]FIG]

;; [59] 完全には削除されず、中途半端な規定がなぜか残っています。
こんな品質でも [[W3C勧告]]になってしまうのですから、不思議なものです。

[7] [CITE@en[Bug 23492 – Linking to a page with a fragment identifier that causes a particular media element to be shown and to seek to a particular position]]
( ([TIME[2013-10-14 22:54:45 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23492>



[REFS[
- [62] [CITE@en-US[mozilla-central: netwerk/base/src/nsMediaFragmentURIParser.cpp@206bf1a98cd7]] ([TIME[2015-01-16 00:45:22 +09:00]] 版) <https://hg.mozilla.org/mozilla-central/file/tip/netwerk/base/src/nsMediaFragmentURIParser.cpp>
- [64] [CITE[trunk/Source/WebCore/html の MediaFragmentURIParser.cpp – WebKit]]
( ([TIME[2015-01-16 00:56:32 +09:00]] 版))
<http://trac.webkit.org/browser/trunk/Source/WebCore/html/MediaFragmentURIParser.cpp>
]REFS]

[72] [[MPD Anchor]] は >>70, >>71, >>73, >>75 から参照されています。
[REFS[
- [70] ([TIME[2014-07-02 00:40:16 +09:00]] 版) <https://www.dvb.org/resources/public/standards/a168_dvb-dash.pdf#page=68>
- [71] ([TIME[2015-02-10 01:01:20 +09:00]] 版) <http://www.hbbtv.org/pages/about_hbbtv/HbbTV_specification_2_0.pdf#page=81>
- [73] <http://www.etsi.org/deliver/etsi_ts/103200_103299/103285/01.01.01_60/ts_103285v010101p.pdf#page=54>
- [75] <http://dashif.org/w/2015/04/DASH-IF-IOP-v3.0.pdf#page=59>
]REFS]

[67] [CITE@en[Specifying time intervals in URI queries and fragments of time-based Web resources]]
( ([TIME[2007-08-25 15:36:57 +09:00]] 版))
<http://annodex.net/TR/URI_fragments.html#rfc.section.4>


[FIG(quote)[
[FIGCAPTION[
[86] [CITE@en[oaubert/mediafragment-prototype]]
([TIME[2015-08-14 12:25:00 +09:00]] 版)
<https://github.com/oaubert/mediafragment-prototype>
]FIGCAPTION]

> Dynamic Media Fragment
> This is a proposal for dynamic spatial media fragments, as well as arbitrary shaped spatial media fragments, for highlighting moving areas in videos.

]FIG]


[87] [CITE[Arbitrarily Shaped and Dynamic Spatial Media Fragments]]
([TIME[2015-06-02 22:04:56 +09:00]] 版)
<http://olivieraubert.net/dynamic-media-fragments/>

[88] [CITE@en[Re: Informal (dynamic) Media Fragments URI discussion]]
([[Olivier Aubert]] 著, [TIME[2015-06-02 22:27:49 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-media-fragment/2015Jun/0000.html>

[89] [CITE@en[Informal (dynamic) Media Fragments URI discussion]]
([[Thomas Steiner]] 著, [TIME[2015-05-21 02:15:09 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-media-fragment/2015May/0000.html>

[90] [CITE@en[24910 – Define how Media Fragments URI end position is handled]]
([TIME[2016-02-02 14:25:25 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=24910>

[FIG(quote)[
[FIGCAPTION[
[91] [CITE@en-US[Podlove Deep Linking | Podlove]]
([TIME[2016-03-19 17:15:56 +09:00]] 版)
<http://podlove.org/deep-link/>
]FIGCAPTION]

> The Media Fragments '''['''1''']'''specification requires the media fragment specifier to be a parameter following a hash sign (“#”) and allows for additional parameters to be passed along. As the podcast client is expected to add just the time range information, any additional parameters that your web player might need must be included in the URL stated in the feed following the fragment identifier.
> The Podcast Client MUST honor existing parameters and append the time specification with an ampersand sign (“&”) if a parameter already exists. The following URL
> http://mypodcast.com/episode/player.php?episode=23#style=external
> must be extended as described to look something like this:
> http://mypodcast.com/episode/player.php?episode=23#style=external&t=10,200
> Right now, this specification does not define any other parameters but might in do so in a future version.

]FIG]


[92] [CITE@en[Errata in Media Fragments URI 1.0 (basic)]]
( ([TIME[2012-09-20 23:21:49 +09:00]]))
<https://www.w3.org/2008/WebVideo/Fragments/errata/media-frags-20120925-errata>

[FIG(quote)[
[FIGCAPTION[
[94] [CITE@en-US[Video and audio APIs - Learn web development | MDN]]
( ([TIME[2017-02-05 15:52:53 +09:00]]))
<https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Video_and_audio_APIs#Specifying_playback_range>
]FIGCAPTION]

> The playback range portion of the media element URI specification was added to Gecko 9.0 (Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6). At this time, this is the only part of the Media Fragments URI specification implemented by Gecko, and it can only be used when specifying the source for media elements, and not in the address bar.

]FIG]


[95] [CITE@en[Support for MPD Anchors · Issue #1361 · Dash-Industry-Forum/dash.js]]
([TIME[2017-06-03 11:16:07 +09:00]])
<https://github.com/Dash-Industry-Forum/dash.js/issues/1361>

[FIG(quote)[
[FIGCAPTION[
[96] [CITE@en[ODRL Vocabulary & Expression 2.2]]
([TIME[2018-03-20 18:10:29 +09:00]])
<https://w3c.github.io/poe/vocab/#term-absoluteTemporalPosition>
]FIGCAPTION]

> The fragment part of a Media Fragment URI (https://www.w3.org/TR/media-frags/) may be used for the right operand. 

]FIG]
