[whatwg] Stream API Feedback

Lachlan Hunt lachlan.hunt at lachy.id.au
Thu Mar 17 02:09:08 PDT 2011

On 2011-03-17 04:22, Robert O'Callahan wrote:
> On Thu, Mar 17, 2011 at 4:36 AM, Lachlan Hunt<lachlan.hunt at lachy.id.au>wrote:
>> I'm not entirely sure I understand your proposal, but are you suggesting
>> that the input streams from the camera/microphone would first go to<video>
>> and<audio>  elements, allowing the existing HTMLMediaElement API on those
>> elements to be used to control those streams, the output of which can then
>> be encoded and recorded to a file or streamed remotely?
> Yes.
>> In fact, of all the properties that are on HTMLMediaElement, the only ones
>> that seem to have any real use for streaming media are volume, muted, paused
>> and ended.  So I'm not convinced that it's a good idea to try and reuse
>> existing APIs simple for the sake of reusing them, when they aren't really a
>> good fit.
> As Olli said,<video>  and<audio>  are designed to support streaming media;
> streaming over a low-latency network is very much like streaming from a
> local device.

Yes, for playback, that's fine, and that's what we've already 
implemented in our experimental implementation of the device element. 
But you seemed to be suggesting that it was sufficient for the purposes 
of controlling and encoding the video stream, despite the fact that 
those controls are not at all suited to that.  Such control needs to 
occur before the video element in the chain, not after it.

----------     -------------------             -----------
| Camera | --> | GeneratedStream | --+-------> | <video> |
----------     -------------------   |         -----------
                                  ---------     -----------------
                                  | Codec | --> | Recorded blob |
                                  ---------     -----------------
                                      |         ------------------
                                      +-------> | PeerConnection |

The stated of the stream, in terms of what gets streamed over P2P or 
recorded locally, must be controlled at the GeneratedStream and given as 
input into the codec.  This includes things like controlling the input 
microphone volume, video height and width, etc.  In particular, the 
encoded height and width for streaming may differ significantly from the 
rendered height and width in the local video preview, so this is not 
something that can be controlled by the video element itself.

> In Gecko, we allow seeking within cached segements of streamed video, and we
> could easily allow that for local devices too --- user-controlled "instant
> replay".

We don't buffer any streamed data in our initial device implementation 
and seeking is not possible.

Lachlan Hunt - Opera Software

More information about the whatwg mailing list