This document describes an extension to HTML which explicitly identifies a transcript linked to a media object such as audio or video.
This is the 3 July editors' draft. The editor plans to request consensus to publish this as a First Public Working Draft.
While Github pull requests are welcome for specific proposed changes, the HTML Accessibility Task Force uses a publicly available tracker installation to track issues on this specification. Please do not use the github issues associated with the repository, as issues there may not be tracked in a timely manner.
[[HTML5]] allows the use of audio or video, and includes mechanisms for associating multiple timed tracks. But in the case where there is a transcript, which may not include timing information, there is no way to provide an explicit association between it and its associated media element.
Throughout this document the terms must and may must be interpreted in accordance with [[RFC2119]].
Over a number of years use cases and requirements have been extensively discussed by the HTML Working Group, in particular by its accessibility and media task forces. The following section is intended to provide a brief summary of the key information.
To meet the delineation requirement this specification defines a new transcript
element as follows:
transcript
elementaria-*
attributes applicable
to the allowed roles.interface HTMLTranscriptElement : HTMLElement {};
The transcript
element can contain any content. It represents a transcript for a media resource.
A transcript may include timing information, machine-readable or otherwise. The preferred solution includes the link to the transcript within the media element for which it is a transcript, and adds a transcript element as a container for a transcript. This can be included on the page in which the media object is embedded, which is a common use in practice, or can serve to separate multiple transcripts collected in a single page.
track
to allow kind="transcript"
This proposal adds transcript
to the set of values defined for the kind
attribute of the track
element. This requires adding an entry to the table
of values defined for the attribute in [[!HTML5]], as follows:
Keyword | State | Brief description |
---|---|---|
transcript |
transcript | Tracks intended to permit use independent of media source. May be displayed by the user agent instead of, or supplementary to, the media resource. |
An objection that has been raised to this method is that it requires a potential change to the current
definition of the track
element in HTML5, which says that it allows
authors to specify explicit external timed
text tracks for media
elements
unless a transcript with no timing information included can be considered a "timed text track". However, this
definition also appears to conflict with the allowed metadata
state for tracks, so will probably be changed anyway.
track
kind
s<video controls> <source src="video.rm"> <!-- A link to a transcript within the same document --> <track
kind="transcript"
title="English transcript" href="#theText"> <!-- A link to an external transcript in french uses hreflang --> <track kind="transcript" hreflang="fr" href="http://transcripts.example.fr/qqchose#laTexte" lang="fr" title="Transcription en français"> <track kind="captions" src="#YouGetTheIdea,Right?" lang="ru"> </video>
<transcript id="theText">This is the english language transcript... </transcript>
The editor would like to acknowledge the awe-filled respec, github, and BlueGriffon, as well as direct contributions to this document by:
Paul Cotton, Daniel Davis, Joan-Marie Diggs, Steve Faulkner, John Foliot, Edward O'Connor, Silvia Pfeiffer, Janina Sajka, Richard Schwerdtfeger, Cynthia Shelly, Léonie Watson, and W3C's HTML Media Task Force
The editor would like to apologise to anybody whose name was left out of this list, and invites corrections.
Several other approaches have been considered to meeting the requirements. They are included here in outline, with some notes, for completeness. This appendix is expected to be removed before requesting advancement to Candidate Recommendation.
Add a new element to HTML representing a link to a transcript for the parent media resource. This requires choosing a name - in
the following we have used relateTranscript
as a placeholder name, to avoid conflicting with the proposed transcript
container element - and defining a new element definition as follows:
relateTranscript
elementsrc
- URL of the transcripttype
- the MIME type of the transcriptliveregion
controlled by the media resource, or a control for the
media resource.aria-*
attributes applicable
to the allowed roles.interface HTMLRelateTranscriptElement : HTMLElement { attribute DOMString src; attribute DOMString type; attribute DOMString media; };
relateTranscript
element<video controls>
<source src="video.rm">
<!-- A link to a transcript within the same document -->
<relateTranscript title="English transcript" href="#theText">
<!-- A link to an external transcript in french uses hreflang -->
<relateTranscript hreflang="fr"
href="http://transcripts.example.fr/qqchose#laTexte"
lang="fr" title="Transcription en francais">
<track kind="captions" src="YouGetTheIdea?Right" lang="ru">
</video>
<transcript id="theText">This is the english language
transcript...
</transcript>
source
elementThe source
element represents a version of the media resource that can be presented as an alternative to others.
This is what a transcript is.
This approach is not preferred as it will involve complex changes.
The element currently allows a MIME type
attribute and a media
query that can be used
to determine when to render a given version. However, although transcripts are likely to have MIME types that are different from
those used for audio or video resources, relying on this difference as a heuristic seems a weak approach to identifying a
transcript.
a
element with rel
and for
attributesThis meets the requirements, but requires defining a new value of rel
, and changes to the for
attribute.
Separating the link from the video code requires developers to include it in the visible content of the page, which leads many developers to try and hide it in the default presentation. A common result is that it is not available to people who need it, such as users with low vision, or is invisible but can be activated, confusing users.
Separating the link from the block of code can lead to it being lost when the source is copied to be used elsewhere.
a
element with rel
and for
attribute<p>
<!-- A link to a transcript within the same document -->
<a rel="transcript" for="theVideo" title="English transcript" href="#theText">Transcript below</a>,
<!-- A link to an external transcript in french uses hreflang -->
<a rel="transcript" for="theVideo" hreflang="fr"
href="http://transcripts.example.fr/qqchose#laTexte"
lang="fr" title="Transcription en francais">transcription aussi disponible en français</a>.
</p>
<video controls id="theVideo">
<source src="video.rm">
<track kind="captions" src="YouGetTheIdea?Right" lang="ru">
</video>
<transcript id="theText">This is the english language
transcript...
</transcript>
An attribute could be defined, analogous to the longdesc
attribute for images.
This approach is not preferred as it makes it very difficult to meet all of the multiple transcripts requirement.
Allowing a space-separated list of URLs does not provide any information to help choose which transcript to link to, or use.
relateTranscript
attribute<video controls relateTranscript="#theText
http://transcripts.example.fr/qqchose#laTexte
"> <source src="video.rm"> <track kind="captions" src="YouGetTheIdea?Right" lang="ru"> </video>
<transcript id="theText">This is the english language transcript... </transcript>