| Internet-Draft | IMSC1 Packaging for MOQT Streaming Forma | July 2026 |
| Law & Nandakumar | Expires 7 January 2027 | [Page] |
This document specifies the packaging format for delivering IMSC1 content as Event Timeline tracks within the MOQT Streaming Format (MSF).¶
This note is to be removed before publishing as an RFC.¶
Status information for this document may be found at https://datatracker.ietf.org/doc/draft-law-moq-imsc1-msf/.¶
Discussion of this document takes place on the Media Over QUIC Working Group mailing list (mailto:moq@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/moq/. Subscribe at https://www.ietf.org/mailman/listinfo/moq/.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 7 January 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
IMSC1 [IMSC1] is a constrained TTML profile for subtitles and captions.
This document defines how IMSC1 content is packaged as an MSF [MSF] Event
Timeline track (Section 8 of [MSF]) using the urn:msf:captions:imsc1
event type.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
Each MOQT Object in an IMSC1 track contains a JSON [JSON] array of Event Timeline records as defined in Section 8.1 of [MSF]. Each record is a JSON object with two fields:¶
m: Media presentation timestamp in milliseconds.¶
data: Payload object whose structure is defined by this specification.¶
The publisher MUST include the initialization entry as the first record
(with m set to 0) in the first MOQT Object of each MOQT Group, per
the independence requirement in Section 8.3 of [MSF].¶
Two packaging modes are defined:¶
Cue mode maps IMSC1 styling, region definitions, and individual cues to JSON objects.¶
The initialization entry carries the IMSC1 profile identifier and reusable style and region definitions.¶
| Field | Type | Required | Description |
|---|---|---|---|
| profile | String | Yes | IMSC1 profile URI |
| styles | Object | No | Named style definitions |
| regions | Object | No | Named region definitions |
The data field MUST contain an init object with the fields above:¶
[
{
"m": 0,
"data": {
"init": {
"profile": "http://www.w3.org/ns/ttml/profile/imsc1/text",
"styles": {
"s1": {"color": "#FFFFFFFF",
"backgroundColor": "#000000C0"}
},
"regions": {
"bottom": {"origin": "10% 80%", "extent": "80% 15%",
"displayAlign": "after",
"textAlign": "center"}
}
}
}
}
]
¶
Each cue entry maps an IMSC1 <p> element to JSON. The m field
MUST equal the start value.¶
| Field | Type | Required | Description |
|---|---|---|---|
| start | Number | Yes | Start time in milliseconds |
| end | Number | Yes | End time in milliseconds |
| region | String | No | Region identifier from init |
| style | String | No | Style identifier from init |
| content | Array | Yes | Content elements |
Each content element MUST be one of:¶
Text span: Object with a REQUIRED text field (String) and an
OPTIONAL style field (String) referencing a named style. Inline
style overrides MAY be specified as additional fields (e.g.,
fontStyle, color).¶
Line break: Object with the single field br set to true.¶
Example:¶
[
{
"m": 1000,
"data": {
"start": 1000,
"end": 4500,
"region": "bottom",
"content": [
{"text": "Good ", "style": "s1"},
{"text": "morning", "fontStyle": "italic"},
{"br": true},
{"text": "everyone."}
]
}
}
]
¶
Document mode preserves the full IMSC1 XML representation for content
requiring embedded SMPTE-TT images, complex animation, or styling
features beyond cue mode. The m field MUST equal the start value.¶
| Field | Type | Required | Description |
|---|---|---|---|
| start | Number | Yes | Start time in milliseconds |
| end | Number | Yes | End time in milliseconds |
| format | String | Yes | "isd" or "fragment" |
| encoding | String | No | "base64" if Base64 encoded |
| xml | String | Yes | IMSC1 XML content |
When encoding is absent, the xml field contains plain UTF-8 XML.
When set to "base64", the xml field is encoded per Section 4 of
[BASE64].¶
Example:¶
[
{
"m": 5000,
"data": {
"start": 5000,
"end": 8500,
"format": "isd",
"xml": "<tt xml:lang=\"en\" xmlns=\"http://www.w3.org/ns/ttml\">...</tt>"
}
}
]
¶
IMSC1 tracks MUST be declared in the MSF Catalog (Section 5 of [MSF]) with the following track object fields:¶
| Field | MSF Section | Requirement |
|---|---|---|
| namespace | 5.2.2 | Per [MSF] |
| name | 5.2.3 | Per [MSF] |
| packaging | 5.2.4 |
MUST be eventtimeline
|
| eventType | 5.2.5 |
MUST be urn:msf:captions:imsc1
|
| mimeType | 5.2.19 |
MUST be application/json
|
| lang | 5.2.32 | BCP 47 language tag |
| depends | 5.2.14 | MUST reference associated media track(s) |
This specification defines one additional field:¶
imsc1Mode (String): MUST be present. Value MUST be cue or document.¶
Example:¶
{
"namespace": "broadcast/captions",
"name": "captions-en",
"packaging": "eventtimeline",
"eventType": "urn:msf:captions:imsc1",
"mimeType": "application/json",
"lang": "en",
"depends": ["video"],
"imsc1Mode": "cue"
}
¶
This document requests registration of the following event type in the "MSF Event Timeline Types" registry established by [MSF].¶
| Event Type | Reference |
|---|---|
| urn:msf:captions:imsc1 | This document |
TODO¶