This version:
https://www.w3.org/TR/2016/NOTE-mse-byte-stream-format-webm-20161004/
Latest published version:
https://www.w3.org/TR/mse-byte-stream-format-webm/
Latest editor's draft:
https://w3c.github.io/media-source/webm-byte-stream-format.html
Editors:
Matthew Wolenetz
,
Google Inc.
Jerry Smith
,
Microsoft Corporation
Aaron Colwell (until April 2015)
,
Google Inc.
Repository:
We are on GitHub
Status of This Document
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current
W3C
publications and the latest revision of this technical report can be found in the
W3C
technical reports index
at https://www.w3.org/TR/.
The working group maintains
a list of all bug reports that the editors have not yet tried to address
; there may also be open bugs in the
previous bug tracker
.
Implementors should be aware that this specification is not stable.
Implementors who are not taking part in the discussions are likely to find the specification changing out from under them in incompatible ways.
Vendors interested in implementing this specification before it eventually reaches the Candidate Recommendation stage should join the mailing list mentioned below and take part in the discussions.
This document was published by the
HTML Media Extensions Working Group
as a Working Group Note. If you wish to make comments regarding this document, please send them to
public-html-media@w3.org
(
subscribe
,
archives
). All comments are welcome.
Publication as a Working Group Note does not imply endorsement by the
W3C
Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the
5 February 2004
W3C
Patent
Policy
.
W3C
maintains a
public list of any patent
disclosures
made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
Essential
Claim(s)
must disclose the information in accordance with
section
6 of the
W3C
Patent Policy
.
This document is governed by the
1 September 2015
W3C
Process Document
.
1.
Introduction
This specification describes a byte stream format based on the WebM container format [
WEBM
]. It defines the MIME-type parameters used to signal codecs, and provides the necessary format specific definitions for
initialization segments
,
media segments
, and
random access points
required by the
byte stream formats section
of the Media Source Extensions spec.
2.
MIME-type parameters
This section specifies the parameters that can be used in the MIME-type passed to
isTypeSupported()
or
addSourceBuffer()
.
codecs
A comma separated list of codec IDs used to specify what codecs will be used in the byte stream.
Codec ID
Valid with "audio/webm"
Valid with "video/webm"
3.
Initialization Segments
A WebM
initialization segment
MUST
contain a subset of the elements at the start of a typical WebM file.
The user agent
MUST
run the
append error algorithm
if any of the following conditions are not met:
The
initialization segment
MUST
start with an
EBML Header
element, followed by a
Segment
header.
The size value in the
Segment
header
MUST
signal an "unknown size" or contain a value large enough to include the
Segment Information
and
Tracks
elements that follow.
A
Segment Information
element and a
Tracks
element
MUST
appear, in that order, after the
Segment
header and before any further
EBML Header
or
Cluster
elements.
The user agent
MUST
accept and ignore any elements other than an
EBML Header
or a
Cluster
that occur before, in between, or after the
Segment Information
and
Tracks
elements.
The user agent
MUST
source attribute values for id, kind, label and language for
AudioTrack
,
VideoTrack
and
TextTrack
objects as described for WebM in the in-band tracks spec [
INBANDTRACKS
].
A WebM
media segment
is a single
Cluster
element.
The user agent uses the following rules when interpreting content in a
Cluster
:
The TimecodeScale in the
WebM initialization segment
most recently appended applies to all timestamps in the
Cluster
The Timecode element in the
Cluster
contains a
presentation timestamp
in TimecodeScale units.
The Cluster header
MAY
contain an "unknown" size value. If it does then the end of the cluster is reached when another
Cluster
header or an element header that indicates the start of an
WebM initialization segment
is encountered.
The user agent
MUST
run the
append error algorithm
if any of the following conditions are not met:
The Timecode element
MUST
appear before any Block & SimpleBlock elements in a
Cluster
.
Block & SimpleBlock elements are in time increasing order consistent with the
WebM spec
.
If the most recent
WebM initialization segment
describes multiple tracks, then blocks from all the tracks
MUST
be interleaved in time increasing order. At least one block from all audio and video tracks
MUST
be present.
The user agent
MUST
accept and ignore
Cues
or
Chapters
elements that follow a
Cluster
element.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words
MAY
,
MUST
, and
SHOULD
are to be interpreted as described in [
RFC2119
].
-
[MEDIA-SOURCE]
-
Matthew Wolenetz; Jerry Smith; Mark Watson; Aaron Colwell; Adrian Bateman. W3C.
Media Source Extensions
. 5 July 2016. W3C Candidate Recommendation. URL:
https://www.w3.org/TR/media-source/
-
[RFC2119]
-
S. Bradner. IETF.
Key words for use in RFCs to Indicate Requirement Levels
. March 1997. Best Current Practice. URL:
https://tools.ietf.org/html/rfc2119
-
[WEBM]
-
The WebM Project.
WebM Container Guidelines
. 26 April 2016. URL:
https://www.webmproject.org/docs/container/