- From: Harald Alvestrand <harald@alvestrand.no>
- Date: Mon, 12 Mar 2012 13:46:20 +0100
- To: public-media-capture@w3.org
FWIW, I'm very skeptical of letting a "picture" control bypass the
access restrictions.
Taking a snapshot once a second presents many of the same privacy
violations as taking a video - and probably at better resolution.
I'm much happier with the idea of such an API if the access permissions
interaction is done elsewhere.
Stylistically, I note that the proposal says that the callback's
signature depends on the options passed to getUserMedia.
That doesn't look like Good Programming Style to me.
Harald
On 03/12/2012 12:14 PM, Rich Tibbett wrote:
> Anant Narayanan wrote:
>> What
>> --
>> We propose a simple addition to getUserMedia to support the simplest
>> use-case of capturing an image from JavaScript, like so:
>>
>> navigator.getUserMedia({'picture': true}, function(Blob blob) { …
>> });
>>
>> Why
>> --
>> There already exists a simple declarative API based on<input> tag
>> specified by the DAP working group (at
>> http://www.w3.org/TR/2011/WD-html-media-capture-20110414/). It works
>> by adding markup like:
>>
>> <input type="file" accept="image/*" id="capture">
>>
>> which, on user action, results in the ability to either select an
>> image from local disk or the webcam. We have found the need to
>> expose the same functionality, but as an API (programmatic approach
>> vs. the declarative one that has already been specified). Rather than
>> coming up with a new API, we propose that we extend getUserMedia to
>> capture this use-case as well.
>>
>> The proposed API also fulfills use case 2.1 "check out my new hat",
>> as specified in the scenarios document
>> (http://dvcs.w3.org/hg/dap/raw-file/tip/media-stream-capture/scenarios.html).
>>
>
> We've run in to the issue of having to figure out when and how to
> invoke (auto-)flash and (auto-)focus features to the web cam for the
> purposes of taking image snapshots via getUserMedia. The use case we
> had in mind is one of reading QR codes via the webcam:
>
> http://shinydemos.com/qr-code/
>
> Right now we aren't getting a consistently reasonable enough
> resolution for extracting the QR code from the image and there's
> currently no way to trigger the flash for low-light conditions. These
> are practical problems that we'd like to solve in the short term.
>
>> How
>> --
>> Invoking navigator.getUserMedia({'picture': true}); will *not* result
>> in a permission prompt (unlike when either 'audio' or 'video' are set
>> to true). Instead, browser chrome will be presented to the user that
>> allows them to preview local devices and snap a picture (or select a
>> local image file). User action on the preview window is implied consent.
>
> It seems that if you could synthesize click events on the input
> element approach presented above then you get this functionality
> programmatically without any additional API footprint e.g. input.click().
>
> I was hoping for something subtly different. More along the lines of
> extracting a still image from an already authorized MediaStream
> object. By default we'd have auto-flash and auto-focus enabled when
> the user called a getSnapshot (or some such API) method but let web
> developers override those settings at run time if they so wish.
>
> Anything that we can defer to the browser's chrome can be done through
> the declarative approach from DAP...and clicking that input button
> implies consent from the user. It is an implicit permissioning
> approach without cumbersome permission dialogs which is an excellent
> design IMO.
>
>>
>> It is already possible to take a picture with
>> getUserMedia({'video':true}…), for example:
>> https://gist.github.com/1852070 (real working code that runs on the
>> Opera Labs version). However, we would like to avoid a dependency on
>> MediaStreams as well as permission prompts for this simple use case
>> and first implementation at Mozilla. I think this is a great starting
>> point.
>>
>> The key difference from the existing getUserMedia spec is that the
>> success callback contains a Blob object if 'picture' was set to true.
>> Blob is fully specified in http://www.w3.org/TR/FileAPI/.
>>
>> This current proposal uses a callback approach but can be updated as
>> necessary when we have consensus on events (a proposal which I will
>> send out separately).
>>
>> I look forward to your feedback!
>
> Thanks for getting the ball rolling on this :)
>
> - Rich
>
>
Received on Monday, 12 March 2012 12:46:58 UTC