Copyright © 2016-2024 Consumer Technology Association & the Contributors to the Web Media API Snapshot 2024 Specification, published by the Web Media API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available.
This specification lists the web APIs to support media web apps that are supported across all four of the most widely used user agent code bases at the time of publication (i.e., Chrome, Edge, Firefox, and Safari). This specification should be updated at least annually to keep pace with the evolving web platform. We encourage manufacturers to develop products that support the APIs in the most recent version of Web Media API Snapshot. This specification is comprised of references to existing specifications in W3C and other specification groups. The target devices will include any device that runs a modern HTML user agent, including televisions, game machines, set-top boxes, mobile devices and personal computers.
This specification was published jointly by the Web Media API Community Group and the Consumer Technology Association (CTA) as part of the CTA WAVE Project.
It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups.
GitHub Issues are preferred for discussion of this specification.
This section is non-normative.
Writing portable media web apps across browsers on consumer products (e.g. smart TVs, game machines, set-top boxes) is much more difficult than writing portable media web apps across personal computer browsers. Two main reasons for this are that the browsers on consumer products are often quite out-of-date and that they often have integration issues.
While browsers integrated into consumer products are often built from the same major HTML user agent code bases as personal computer browsers, it is not unusual for a consumer product to be using a code base release that is three or more years old, while personal computer browsers use recent code base releases. Furthermore, browsers on consumer products are often infrequently updated, if ever. This results in very different web API support across devices.
This specification is intended to address this problem by listing key specifications used by media web apps that are all supported in common by all of the four major web user agent code bases at the time of publication (i.e., Chrome, Edge, Firefox, and Safari). The specification will then be used to generate a test suite. The versions of each of the four code bases used to generate the test suite are listed on the front page of the test suite. (See Test suite URL above.)
The specification and test suite enable device manufacturers to specify and verify that their browsers are up-to-date with current web standards at the time of product release. The specification and tests can also be used to specify and verify updates to browsers in the field.
Note that this specification is not defining a subset or profile to be used in place of the full web platform. There are additional specifications that are included in all code bases that are not included in this specification. Furthermore, individual code bases include APIs that are not supported on all other code bases, but are nonetheless widely used. Therefore, this specification and associated tests should only be used as verification of a minimum set of current APIs. There is no suggestion that APIs not included in this specification should be removed from implementations.
It is intended that this specification be updated periodically to reflect adoption of new specifications in the web platform. For example, the specification might be updated once a year for media devices being introduced onto the market in the following year.
There are many issues during integration of a web user agent with a hardware device that can affect the operation of web APIs. For example, if insufficient memory is allocated for cookies, they won’t function as intended.
To address this issue, this specification includes a list of target values for several APIs which are known to have been impacted by integration issues. There will also be a test suite to verify these values are supported on a device. It is expected that additional integration requirements will be added in future updates.
Note that these values are not mandated by any web standards, but are based on measurement of values supported by popular browsers. Supporting these values should provide better interoperability of web applications with personal computer and mobile browsers. Manufacturers may choose to exceed these values based on their expected application environments.
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 MUST and SHOULD 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.
This section is non-normative.
This section lists the web APIs to support media web apps that are supported across all four of the most widely used user agent code bases at the time of publication (i.e., Chrome, Edge, Firefox, and Safari). We encourage manufacturers to develop products that support the APIs in the most recent version of this specification.
The approach taken in this draft is only to include specifications that are of particular significance to authors, but not include all the specifications cited by those included specifications. For example, HTTP is required by the HTML spec and is therefore not included here.
In addition, the specifications of the web APIs mentioned here may in turn (recursively) reference other specifications that are not supported across all four of the most widely used user agent code bases. This possibility is understood and accepted. For example, Content Security Policy Level 2 [CSP2] references the image()
function from CSS Images Module Level 4 [CSS-IMAGES-4], but CSS Images Module Level 4 is not yet widely supported. These unsupported referenced specifications are not explicitly cited as exceptions in this specification but, in spite of this, will not be tested as part of our tests.
Parts of some web specifications are not currently implemented across all user agent code bases and may never be. Consequently, these features will not be included in our tests. Any such features are noted as exceptions under that API.
Some specifications referenced in this section may not have reached Recommendation and, as such, may contain 'at-risk' features. Since the most common reason for features being marked as at-risk is lack of implementations, such features may not be present in some implementations of this specification and will not be tested as part of our tests.
While this specification does not specify a minimum or maximum number of media elements that can play content simultaneously, developers should note that due to hardware limitations of available decoders, the simultaneous playback of multiple media elements in a web application may not be possible.
The W3C Technical Architecture Group released a finding called The evergreen Web which strongly recommends that "Browsers must be regularly updated, especially to fix security and interoperability bugs — ideally with an automatic, secure update mechanism." [EVERGREEN-WEB]
Devices SHOULD regularly update their browsers, preferably automatically.
Devices MUST be conforming implementations of the following specifications:
Atomics.waitAsync
method is not yet widely supported.hidden=until-found
HTML attribute and the beforematch
event are not yet widely supported.fetchpriority=""
attribute is not yet widely supported.contenteditable="plaintext-only"
attribute is not yet widely supported.showPicker()
support for <select>
elements is not yet widely supported.Devices MUST be conforming implementations of the following specifications, which are derived from the official Cascading Style Sheets definition from CSS Snapshot 2023 [CSS-2023] as well as more recent revisions to CSS specifications as appropriate:
video
elements is not required to be supported. More complex requirements such as 2D rotate, 2D skew or any of the 3D transforms may not work at all or may be limited to unencrypted content and/or to HD / SD content or even to only SD content. They may also result in dropped frames.'all'
, 'print'
, and 'screen'
. Other previous media types, such as 'tv'
, have been deprecated. Informal testing suggests this reduction has been implemented in browser code bases for a number of years.Devices MUST be conforming implementations of the following specifications:
RTCRtpTransceiverDirection
of "sendrecv
" or "sendonly
" on those devices. This also implies the RTCRtpSender
interface is not required to be implemented, and the Media Capture and Streams [GETUSERMEDIA] requirements are limited to MediaStream
, MediaStreamTrack
, and MediaStreamConstraints
as defined in Media Capture and Streams and extended by WebRTC. This enables WebRTC to be leveraged for use cases such as security camera feeds, ultra low latency live streaming, and cloud gaming.
Devices MUST be conforming implementations of the following specifications:
Devices MUST be conforming implementations of the following specifications:
Devices MUST be conforming implementations of the following specifications:
Sec-Purpose: prefetch
header is not yet widely supported."json"
destination for JSON modules is not yet widely supported.Devices MUST be conforming implementations of the following specifications:
Note: Along with these security standards for the user agent, all IoT devices should be designed with security in mind. An industry-developed voluntary consensus standard for a minimum security "baseline" for IoT devices can be found at https://shop.cta.tech/collections/standards/cybersecurity.
Devices MUST be conforming implementations of the following specifications:
Devices MUST be conforming implementations of the following specifications:
This section is non-normative.
This section contains values for integrating a web user agent with a consumer device. The values are based on de facto requirements from browsers on personal computers and mobile devices. Supporting these integration specifications will increase interoperability with media web apps on other devices.
A test suite will evaluate client support for these specifications.
This section is non-normative.
APIs in this section are important for web media delivery, but either are not yet implemented in all four code bases or not yet commonly implemented across embedded browsers in consumer products, such as WPEWebKit. We encourage the following APIs be implemented on all HTML user agents as soon as possible. It is expected that, as implementations become available, some of these specifications may be listed as supported on all platforms in a future version of this specification.
This annex lists Web Media API bindings assigned within the CTA namespace "urn:cta
". These bindings may be used to signal compatibility intent or requirement for the WAVE API Snapshot identified in the binding.
See https://www.iana.org/assignments/urn-formal/cta for the CTA namespace registration in the Official IANA Registry of URN Namespaces [IANA-URN-NAMESPACES].
The table below is normative within this specification. For more information on these bindings contact standards@CTA.tech.
CTA Identifier | Referenced Specification |
---|---|
urn:cta:wave:appinformation:standardversion:cta5000:2017 | Web Media API Snapshot 2017 CTA-5000 [CTA-5000] |
urn:cta:wave:appinformation:standardversion:cta5000a:2018 | Web Media API Snapshot 2018 CTA-5000-A [CTA-5000-A] |
urn:cta:wave:appinformation:standardversion:cta5000b:2019 | Web Media API Snapshot 2019 CTA-5000-B [CTA-5000-B] |
urn:cta:wave:appinformation:standardversion:cta5000c:2020 | Web Media API Snapshot 2020 CTA-5000-C [CTA-5000-C] |
urn:cta:wave:appinformation:standardversion:cta5000d:2021 | Web Media API Snapshot 2021 CTA-5000-D [CTA-5000-D] |
urn:cta:wave:appinformation:standardversion:cta5000e:2022 | Web Media API Snapshot 2022 CTA-5000-E [CTA-5000-E] |
urn:cta:wave:appinformation:standardversion:cta5000f:2023 | Web Media API Snapshot 2023 CTA-5000-F [CTA-5000-F] |
urn:cta:wave:appinformation:standardversion:cta5000g:2024 | Web Media API Snapshot 2024 CTA-5000-G [CTA-5000-G] |
For WHATWG living standards, while it is recommended that devices support the living standard, they must support the referenced review draft version of each WHATWG standard or a later commit snapshot version.