HTML 5: dostęp do kamery internetowej

Jakiś czas temu Bruce Lawson pisał na dev.opera o możliwości uzyskania dostępu do kamery internetowej (link). Na ostatnim Meet.js Summit m.in. o tym samym mówił Patrick H. Lauke, który zaprezentował do tego działające przykłady. Czyżby dni flasha były już policzone?

API getusermedia jest jeszcze we wczesnej fazie rozwoju i może ulec wielokrotnym zmianom!

Support

Zanim pokaże jak dobrać się do kamery, kilka słów o tym gdzie testować przykład. W chwili obecnej (t.j. połowa stycznia) tylko Opera , w wydanej specjalnie na te potrzeby wersji, daje nam możliwość dostępu do kamery.

Dostęp do kamery

By uzyskać dostęp do kamery internetowej, należy wywołać funkcję getUserMedia, która przyjmuje dwa wymagane parametry i trzeci opcjonalny. Pierwszy parametr to informacja do jakich urządzeń chcemy dać dostęp przeglądarce. Poniższa linijka umożliwia nam dostęp wyłącznie do mikrofonu:

{audio: true}

Aby otrzymać obraz z kamery wystarczy jako parametr przekazać poniższy obiekt:

{video: true}

Oczywiście, jeżeli interesuje nas dostęp jednocześnie do mikrofonu i kamery, wystarczy przekazać obiekt zawierający obydwie powyższe właściwości.
Jako drugi parametr przekazujemy funkcję, która zostanie wywołana po tym jak użytkownik zezwoli nam na działanie z kamerką. Trzecim parametrem jest również funkcja, która tym razem zostanie wywołana w przypadku wystąpienia jakiegoś błędu lub po odrzuceniu przez użytkownika prośby o dostęp do swoich urządzeń. Cała metoda wygląda tak:

navigator.getUserMedia(
     {audio: true; video: true}, success, error
);

Przykład

Skoro uzyskaliśmy już dostęp do kamerki, wyświetlmy teraz obraz z niej na naszej stronie. Do tego posłuży nam tag video:

<video id="camera" autoplay></video>

Teraz wystarczy przekazać obraz z kamerki do funkcji success i przypisać go do obiektu video:

if(navigator.getUserMedia){
    navigator.getUserMedia({video: true}, function(stream){
        var video = document.getElementById("camera");
	video.src = stream;
    });
}

Link do przykładu

Podsumowanie

To na razie wszystko. Teraz pozostaje śledzić rozwój dokumentacji i oczekiwać kolejnych przeglądarek dających możliwość dostępu do kamery internetowej. Na koniec zostawiam was z pytaniem: czy jest to kolejny gwóźdź do trumny flasha?