Re: timing model of the media resource in HTML5

On Wed, 25 Nov 2009 17:01:27 +0100, Eric Carlson <eric.carlson@apple.com>  
wrote:

>
> On Nov 25, 2009, at 4:24 AM, Philip Jägenstedt wrote:
>
>> Below I focus on the HTML-specific parts:
>>
>> Captions/subtitles... The main problem of reusing <source> is that it  
>> doesn't work with the resource selection algorithm.[1] However, that  
>> algorithm only considers direct children of the media element, so  
>> adding a wrapping element would solve this problem and allow us to spec  
>> different rules for selecting timed-text sources. Example:
>>
>> <video>
>>  <source src="video.ogg" type="video/ogg">
>>  <source src="video.mp4" type="video/mp4">
>>  <overlay>
>>    <source src="en.srt" lang="en-US">
>>    <source src="hans.srt" lang="zh-CN">
>>  </overlay>
>> </video>
>>
>> We could possibly allow <overlay src="english.srt"></overlay> as a  
>> shorthand when there is only one captions file, just like the video  
>> <video src=""></video> shorthand.
>>
>> I'm suggesting <overlay> instead of e.g. <itext> because I have some  
>> special behavior in mind: when no (usable) source is found in  
>> <overlay>, the content of the element should be displayed overlayed on  
>> top of the video element as if it were inside a CSS box of the same  
>> size as the video. This gives authors a simple way to display overlay  
>> content such as custom controls and complex "subtitles" like animated  
>> karaoke to work the same both in normal rendering and in fullscreen  
>> mode. (I don't know what kind of CSS spec magic would be needed to  
>> allow such rendering, but I don't believe overlaying the content is  
>> very difficult implementation-wise.)
>>
>   I like the idea of an <overlay> element, but I don't understand what  
> you are proposing for when no usable source is found. Can you elaborate  
> please?
>

My thinking is that <overlay> should be the container of overlay content  
whether it is from an external subtitle file or from HTML. When an  
external subtitle file is used the element acts as if it had a single text  
node child with the content of the current text from the subtitle file. In  
the absence of an external file the content of the element is shown as  
"fallback", which can then easily be set using script.

<!-- external subtitles -->
<video src="foo">
   <overlay src="en.srt"></overlay>
</video>

<!-- script subtitles -->
<video src="foo">
   <overlay id="subs"><!-- nothing yet --></overlay>
</video>
<script>
/* at the appropriate time */
document.querySelector("#subs").textContent = "ping";
/* at the appropriate later time */
document.querySelector("#subs").textContent = "pong";
</script>

CSS on the overlay element can take us a long way. This content model may  
be a bit peculiar and the implementability should be assessed. Like  
everything this may need refining. Plan B would be to split the two roles  
of <overlay> into 2 or more elements.

-- 
Philip Jägenstedt
Core Developer
Opera Software

Received on Wednesday, 25 November 2009 16:51:00 UTC