[fr] capture vidéo avec html5

32
Capture vidéo avec HTML5 #ParisJS — 25 Mai 2011 Thomas Bassetto — @tbassetto

Upload: thomas-bassetto

Post on 24-May-2015

3.493 views

Category:

Technology


1 download

DESCRIPTION

Présentation faite lors du meetup #parisjs de mai 2011. Un article en français (et un autre en anglais) sont à venir, avec plus de détails.

TRANSCRIPT

Page 1: [FR] Capture vidéo avec HTML5

Capture vidéo avec HTML5

#ParisJS — 25 Mai 2011Thomas Bassetto — @tbassetto

Page 2: [FR] Capture vidéo avec HTML5

• HTML5 == buzzword // true• L’audio, une autre fois

Page 3: [FR] Capture vidéo avec HTML5

Introduction

• Pourquoi ? Tchat, avatar, etc.

• ~ 3 specs + 10 implémentations

• Desktop, Mobile, Runtimes

• Flash le fait depuis au moins 2005

• “Débuts” en 2008 (Mozilla camera://, Google Gears)

Page 4: [FR] Capture vidéo avec HTML5

W3C

Page 5: [FR] Capture vidéo avec HTML5

DAP WG au W3C

• Device APIs and Policy Working Group

• HTML Media Capture + Media Capture API

Page 6: [FR] Capture vidéo avec HTML5

HTML Media Capture

<input type="file" accept="image/*">

<input type="file" accept="image/*" capture="camera">

capture = camera, camcorder, microphone, filesystem

Page 7: [FR] Capture vidéo avec HTML5

Media Capture API

navigator.device.capture.captureImage(success, error, { limit: 1 });navigator.device.capture.supportedImageFormats;

Page 8: [FR] Capture vidéo avec HTML5

Implémentations

• Android Stock Browser

• PhoneGap

Page 9: [FR] Capture vidéo avec HTML5

Android

<input type="file" accept="image/*;capture=camera"></input>  

Page 10: [FR] Capture vidéo avec HTML5

PhoneGap

navigator.device.capture.captureImage(success, error, { limit: 1 });navigator.device.capture.supportedImageModes;

Page 11: [FR] Capture vidéo avec HTML5

WHATWG

Page 12: [FR] Capture vidéo avec HTML5

HTML Living Standard

• Video conferencing and peer-to-peer communication

• Stream API

• PeerConnection

Page 13: [FR] Capture vidéo avec HTML5

Code

window.navigator.getUserMedia(options, successCallback [, errorCallback ] );

Page 16: [FR] Capture vidéo avec HTML5

Implémentations

• Opera

• WebKit bientôt ?

Page 17: [FR] Capture vidéo avec HTML5

WAC

Page 18: [FR] Capture vidéo avec HTML5

Wholesale Applications Community

• OMPT BONDI + JIL => WAC

• ~ 50 membres : opérateurs et constructeurs

• WAC 1.0 et WAC 2.0

Page 19: [FR] Capture vidéo avec HTML5

Code — WAC 1.0

Widget.Multimedia.Camera.captureImage("/home/usr1/a.jpg", false);Widget.Multimedia.Camera.onCameraCaptured = myCallBack;

Page 20: [FR] Capture vidéo avec HTML5

Code — WAC 2.0

var mainCamera;

var pendop = deviceapis.camera.getCameras(onCamerasObtained, onGetCamerasError);

mainCamera = cams[0];

var op = mainCamera.captureImage(onCaptureImageSuccess, onCaptureImageError, {destinationFilename:"images/a.jpg", highRes:true});

// startVideoCapture()

Page 21: [FR] Capture vidéo avec HTML5

Implémentations

WAC Spec Version Runtime Vendor Device OS

WAC 2.0 beta Aplix Android 2.2+

WAC 1.0 & 2.0 beta Borqs Android 2.2+

WAC 1.0 Obigo Android 2.2x

WAC 1.0 & 2.0 beta Opera Android 2.1+

Page 22: [FR] Capture vidéo avec HTML5

Ericsson Labs

Page 23: [FR] Capture vidéo avec HTML5

Juste pour les yeux

• Travail sur WebKit

• 5 articles

• Aucun code ou binaire public

Page 24: [FR] Capture vidéo avec HTML5

Code

<script>window.onload = function () { var videoDevice = document.getElementById("video_device"); videoDevice.onchange = function (evt) { var videoStream = this.data; var video = document.getElementById("video"); video.src = videoStream.url; video.play(); };} </script><device type="video_capture" id="video_device"></device> <video width="320" height="240" id="video" controls />

Page 25: [FR] Capture vidéo avec HTML5

Codevar transceiver = new MediaStreamTransceiver("ws://150.132.141.60:8880/delayswitch?sid=0");

// dans le onchange

transceiver.localStream = videoStream;

transceiver.onconnect = function () { var remoteVideo = document.getElementById("remote_video"); remoteVideo.src = transceiver.remoteStream.url; remoteVideo.play();};

Page 26: [FR] Capture vidéo avec HTML5

Mozilla

Page 27: [FR] Capture vidéo avec HTML5

Rainbow

• Projet de Mozilla Labs

• API perso

• Extension disponible pour Firefox 4

• /!\ (sur Mac Firefox doit être lancé en 32-bit)

Page 28: [FR] Capture vidéo avec HTML5

Codewindow.navigator.media.beginSession(params, ctx, observer);

function observer(type, data){ switch (type) { case "session-began": window.navigator.media.beginRecord(); break; case "record-began": break; case "record-ended": break; case "record-finished": break; case "session-ended": break; }}

// endRecord() // fetchImage()

Page 30: [FR] Capture vidéo avec HTML5

Les autres

Page 31: [FR] Capture vidéo avec HTML5

En JavaScript aussi

• BlackBerry® WebWorks™

• Nokia WRT pour Symbian

Page 32: [FR] Capture vidéo avec HTML5

Conclusion

“Il est probable que la Media Capture API s'aligne sur getUserMedia() de WHAT, ou quelque chose du genre — c'est une question de priorité accordée par les participants.

Au final, le W3C publiera forcément autour du stream, et ça sera en accord avec le WHAT. Aussi, le W3C vient de lancer un groupe Real Time Web qui va traiter (avec l'IETF) de beaucoup d'aspects du streaming.”

— Un membre du DAP Working Group :)

Prédiction : Spécifications stabilisées et implémentations plus solides fin 2012, début 2013.