- From: Randell Jesup <randell-ietf@jesup.org>
- Date: Tue, 15 May 2012 03:11:41 -0400
- To: public-media-capture@w3.org
Regarding the "simple capture API": Robert O'Callahan had indicated he'd propose an alternative. Here's a possibility he came up with. Note as he mentions we've already landed in Mozilla nightlies media_element.src = stream. Note that this would NOT work well with createObjectURL, especially if the "avoids leaks better" option for a single use is in play. (It's retrieving the mediastream from media_element.src.) To work at all with URL.createObjectURL there would need to be a URL.objectFromURL or some equivalent. (Another example of why .src = stream is a good idea, and createObjectURL is clumsy.) Randell This is about an app grabbing a preview stream and then, when the user presses a "take photo" button, firing the flash and grabbing a high-res snapshot, right? Here's a thought experiment: <video id="preview" onclick="takePhoto(event)"></video> <script> function onsuccess(stream) { document.getElementById("preview").src = stream; } function blobCallback(blob) { // This blob contains the image data; do whatever needs to be done with it } function takePhoto(event) { var stream = event.target.src; var videoTrack = stream.videoTracks[0]; videoTrack.takeSnapshot({}, blobCallback); } navigator.getUserMedia({video:true}, onsuccess); </script> Apart from allowing HTMLMediaElement.src to be a MediaStream (already on mozilla-central!), the only new API here a VideoMediaStreamTrack subclass of MediaStreamTrack, with a takeSnapshot method on it. I've given that method a blob callback to asynchronously return the snapshot image, and an options object. By default I think the snapshot should autofocus, autoflash, etc, but you could provide options to override all of those things. I'm not enough of a domain expert to say what all those options should be. By default, takeSnapshot should obtain the best quality and highest-resolution image the hardware can provide. Rob
Received on Tuesday, 15 May 2012 07:13:40 UTC