Věděli jste, že váš prohlížeč umí … ?

Věděli jste, že váš prohlížeč umí … ?

Exkurze méně známými API webových prohlížečů

Čtvrtkon 11. 5. 2017

Ondřej Žára, @0ndras

Ekosystém JavaScriptových knihoven

Bojový plán

  1. Web Audio
  2. Web Crypto
  3. Media Capture + Video + Canvas
  4. Web Speech

Web Audio API

Web Audio API

Web Audio API – ukázka

var audio = new AudioContext(); var o = audio.createOscillator(); o.frequency.value = 440; o.connect(audio.destination); o.start();

Web Audio API – využití

Web Audio API – závěrem

Web Crypto

Web Crypto

Web Crypto – digest

const str = "TEST"; function show(result) { let str = ""; new Uint8Array(result).forEach(byte => { str += byte.toString(16).padStart(2, "0"); }); document.body.innerHTML = str; } let numbers = str.split("").map(x => x.charCodeAt(0)); let data = new Uint8Array(numbers); crypto.subtle.digest({name:"SHA-256"}, data).then(show);

Web Crypto – encrypt

function encrypt(key) { let iv = crypto.getRandomValues(new Uint8Array(16)); let data = new Uint8Array([1, 2, 3, 4]); crypto.subtle.encrypt({name: "AES-GCM", iv}, key, data).then(...); } crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]).then(encrypt);

Web Crypto – závěrem

Media Capture

Media Capture

Media Capture – ukázka

function show(stream) { let video = document.querySelector("video"); video.srcObject = stream; video.play(); } navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(show);

Media Capture – real-time zpracování

Media Capture – závěrem

Web Speech

Speech Synthesis

let voices = speechSynthesis.getVoices(); console.log(voices); let u = new SpeechSynthesisUtterance("My hovercraft is full of eels."); speechSynthesis.speak(u);

Speech Recognition

const SR = window.SpeechRecognition || window.webkitSpeechRecognition; let r = new SR(); r.lang = "en"; r.start(); r.onspeechend = e => r.stop(); r.onresult = e => { alert(e.results[0][0].transcript); }

Web Speech: rozpoznání, překlad, syntéza

Ukázka

Web Speech – závěrem

Co jsme nestihli / za domácí úkol

Prostor pro otázky