mul$media*im*netz* (online*mul$media)* - medieninformatik · assignment*8:*mean*vs.*lamp* •...

40
Mul$media im Netz (Online Mul$media) Wintersemester 2014/15 Übung 10 (Haup-ach) Online Mul6media WS 2014/15 Übung 10 LudwigMaximiliansUniversität München 1

Upload: others

Post on 05-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Mul$media  im  Netz  (Online  Mul$media)  Wintersemester  2014/15  

Übung  10  (Haup-ach)  

Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  Ludwig-­‐Maximilians-­‐Universität  München   1  

Page 2: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Today‘s  Agenda  

•  Quiz  (Tutorial  &  Lecture)  •  Discussion  of  assignment  08  •  Media  Streaming  in  the  Browser  

–  MediaStream  API  (aka  getUserMedia)  –  WebRTC  –  Socket.IO  –  PeerChat  

•  Mash-­‐Ups  Presenta6on    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   2  

Page 3: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Today‘s  Agenda  

•  Quiz  (Tutorial  &  Lecture)  •  Discussion  of  assignment  08  •  Media  Streaming  in  the  Browser  

–  MediaStream  API  (aka  getUserMedia)  –  WebRTC  –  Socket.IO  –  PeerChat  

•  Mash-­‐Ups  Presenta6on    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   3  

Page 4: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Quiz  –  Part  1  -­‐  Tutorial  

1.  How  do  you  add  dependencies  to  a  node  web  app?  2.  Is  JSON  a  human  readable  data  format?  3.  What  are  the  advantages  of  JSON  over  XML?  4.  Does  every  node  web-­‐app  listen  on  its  own  port?  5.  What  does  the  body-­‐parser  middleware  do?  6.  What  is  serializa6on  and  why  is  it  necessary?  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   4  

Page 5: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Quiz  –  Part  2  –  Lecture    

1.  Which  is  more  recommendable  regarding  video  streaming:  TCP  or  UDP?  Explain  your  answer.  

2.  What  does  „Jider“  mean?  3.  What  does  a  Content  Delivery  Network  (CDN)  do?  4.  Does  video  streaming  on  YouTube  follow  the  Push  or  Pull  

model?  Explain  how  it  works  in  general.  5.  What  is  the  main  idea  behind  adap6ve  video  streaming?  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   5  

Page 6: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Today‘s  Agenda  

•  Quiz  (Tutorial  &  Lecture)  •  Discussion  of  assignment  08  •  Media  Streaming  in  the  Browser  

–  MediaStream  API  (aka  getUserMedia)  –  WebRTC  –  Socket.IO  –  PeerChat  

•  Mash-­‐Ups  Presenta6on    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   6  

Page 7: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  AngularJS  vs.  jQuery  

•  AngularJS  core  assets:  à  two-­‐way  databinding  vs.  callbacks  à  Model-­‐View-­‐Whatever  padern  (≈  MVC)  à  Framework  vs.  Library  à  Templates    à  Modules  and  Dependency  Injec6on  

•  All  this  makes  AngularJS  somewhat  more  dynamic  and  more  flexible  than  jQuery  

•  Drawback:  Higher  abstrac6on  level  might  be  more  difficult  to  adapt  to  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   7  

Page 8: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  MEAN  vs.  LAMP  

•  A  client  asks  you  to  set  up  a  company  blog  on  the  website.  There  are  around  10  different  authors,  and  the  blog  will  be  read  by  2000  visitors  per  month.  –  not  many  visitors  (2000/30  ≈  70  per  day)  –  LAMP  s6ll  scales  well  to  

this  point.    –  LAMP  tools  and  templates  readily  available  and  easy  to  set  up  (e.g.  

WordPress)    è  S6ck  with  LAMP  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   8  

Page 9: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  MEAN  vs.  LAMP  

•  You  want  to  create  a  site  that  queries  Twider  Tweets  containing  a  certain  hashtag  and  display  those  tweets  immediately  on  the  website.  –  „real  6me“  requirement  is  well  supported  by  MEAN,  because  of  its  

asynchronous  nature.  –  simple  and  small  AJAX  calls  na6vely  supported  by  MEAN    è  Use  MEAN  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   9  

Page 10: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  MEAN  vs.  LAMP  

•  You  have  an  idea  for  a  new  portal  that  compares  flight  prices.  More  than  2  Million  visitors  are  expected  each  month.  –  Heavy-­‐load  web  app  that  requires  scalable  infrastructure  –  MySQL  does  not  scale  well  to  that  point  –  asynchronous  calls  all  the  way  (query  many  different  flight  operators‘  

sites)  –  bidirec6onal  communica6on  very  likely    è  Use  MEAN  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  10  

Page 11: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  MEAN  vs.  LAMP  

•  You  offer  a  service  similar  to  Google  Keep,  where  people  can  take  notes  and  create  simple  to-­‐do-­‐lists.  –  Depending  on  the  user  count,  this  might  be  heavy  duty.  –  Simple  requirement  à  simple,  well  manageable  architecture    –  No  binary  data  in  databases    è  MEAN  or  LAMP  both  work  fine.  Slight  tendency  towards  MEAN,  because  of  the  asynchronous  aspect  (easier  collabora6on,  if  necessary)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  11  

Page 12: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  8:  MEAN  vs.  LAMP  

•  You  want  to  create  the  next  big  social  network  that  challenges  Facebook    –  Beder  choose  your  technology  well  ;)  –  MEAN  is  s6ll  on  the  rise  –  LAMP  might  be  too  weak  to  handle  a  ‘Facebook  Killer’  although  much  

of  Facebook’s  infrastructure  relies  on  PHP.  –  MEAN  needs  to  prove  in  the  long  run    è  Beder  choose  something  that’s  up  to  speed  with  current  developments  instead  of  riding  an  old  horse  ;)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  12  

Page 13: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Today‘s  Agenda  

•  Quiz  (Tutorial  &  Lecture)  •  Discussion  of  assignment  08  •  Media  Streaming  in  the  Browser  

–  MediaStream  API  (aka  getUserMedia)  –  WebRTC  –  Socket.IO  –  PeerChat  

•  Mash-­‐Ups  Presenta6on    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  13  

Page 14: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Video  and  Audio  in  the  Browser  

•  Simple,  unidirec6onal  streaming  possible  with  the  <video> and  <audio>  tags  

•  Before  HTML5,  browser  plugins  were  necessary  to  play  mul6media  content    

•  MP3/MP4  is  supported  in  most  browsers:  <audio src="./sound.m4a"></audio> !

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  14  

Page 15: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐   15  

How  do  we  achieve    mul$media  input?  

Page 16: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

HTML5,  JavaScript  and  Media  Capture  

•  Goal:  access  audio/video  through  HTML  •  Capturing  used  to  rely  on  plugins  (e.g.  Flash,  Silverlight,  

Quick6me,  Java  Applets)  •  HTML5  brings  audio/video  capturing  func6onality!  •  Part  of  the  WebRTC  effort  (more  on  this  in  a  moment)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  16  

Page 17: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Media  Stream  API  

•  Synchronized  streams  of  media,  i.e.  synchronized  audio  and  video  streams.  

•  Streams  have  inputs  (e.g.  camera)  and  an  output    •  Most  important  method:  

 navigator.getUserMedia( ! constraints, ! successCallback, ! errorCallback!) !

•  MediaStream  Object  returned  to  successCallback:          

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  17  

{ "onremovetrack" : null, ! "onaddtrack":null, ! "onended":null, ! "ended":false, ! "id":"3e7BpY1juXXwO2roIY9BgHBzTy6kMwCyyr4B", ! "label":"3e7BpY1juXXwO2roIY9BgHBzTy6kMwCyyr4B" !} !

Page 18: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Media  capture  availability  check  

<script> ! function isUserMediaCapable() { ! return !!( ! navigator.getUserMedia || ! navigator.webkitGetUserMedia || ! navigator.mozGetUserMedia || ! navigator.msGetUserMedia); ! } !! if (isUserMediaCapable()) { ! document.write("getUserMedia is supported"); ! } else { ! alert('getUserMedia() not supported'); ! } !</script> !

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  18  

Page 19: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Permissions  •  getUserMedia()  usually  generates  a  built-­‐in  browser  dialog  

 Chrome:    Firefox:  

•  Permissions  are  requested  with  a  JSON  Object  as  first  parameter:  var requestedPermissions = { ! audio: true, ! video: true !}; !

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  19  

Page 20: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Reset  Permissions  in  Chrome  (1)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  20  

Page 21: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Reset  Permissions  in  Chrome  (2)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  21  

Page 22: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Reset  Permissions  in  Chrome  (3)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  22  

Page 23: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Simple  A/V  Capture  Script  <video autoplay></video> !<script> ! // Source : http://goo.gl/Bc8JN ! // allows us to use .getUserMedia across browsers. ! navigator.getUserMedia = navigator.getUserMedia || ! navigator.webkitGetUserMedia || ! navigator.mozGetUserMedia || ! navigator.msGetUserMedia; !! // get the first video element in the DOM ! var video = document.querySelector('video'); ! if (navigator.getUserMedia) { ! navigator.getUserMedia({ ! audio: true, ! video: true! }, ! function (stream) { ! video.src = window.URL.createObjectURL(stream) ! }); ! } !</script> !Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  23  

Page 24: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Constraints  

•  Instead  of  simply  reques6ng  a  permission,  we  can  request  even  more  sezngs,  e.g.  the  video  resolu6on:    

•  All  supported  constraints:  hdps://w3c.github.io/mediacapture-­‐main/getusermedia.html#idl-­‐def-­‐MediaTrackConstraints    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  24  

var hdConstraints = { ! video: { ! mandatory: { ! minWidth: 1920, ! minHeight: 1080 ! } ! } !}; !!navigator.getUserMedia(hdConstraints, ...)!

Page 25: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Taking  Video  Snapshots  

var video = document.querySelector('video'); !var canvas = document.querySelector('canvas'); !var ctx = canvas.getContext('2d'); !!function snapshot() { !

ctx.drawImage(video, 0, 0); ! document.querySelector('img').src = ! canvas.toDataURL('image/webp'); !} !!navigator.getUserMedia(hdConstraints, function(stream) { ! video.src = window.URL.createObjectURL(stream); ! video.addEventListener('click', snapshot, false); !}); !!

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  25  

Page 26: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Interac$vity  

•  Play  a  „camera  shuder“  sound  when  the  user  takes  a  snapshot!  

•  A  sound  file  is  included  in  the  material  for  this  tutorial  •  Sound  file  source  (Crea6ve  Commons):  

hdps://www.freesound.org/people/xef6/sounds/61059/    

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  26  

Page 27: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

WebRTC  

•  Goal:  real  time  communica6on  without  browser  plugins  (like  Adobe  Flash,  Apple  QuickTime,  Facebook,  Skype,    Google  Talk  ...)    

•  Audio,  Video  or  simply  data.  •  Tutorial:  

hdp://www.html5rocks.com/en/tutorials/webrtc/basics/  •  Currently  supported  Browsers  (Jan  2015):  

 

•  Mobile  OS:  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  27  

Page 28: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

WebRTC  Challenges  

•  Stream  audio,  video  and  other  data  •  Get  network  info  (IP  adresses,  ports)  to  other  clients  through  

firewalls  •  Coordinate  sessions  

–  signal  –  ini6ate  –  close  

•  And  more...  •  WebRTC  implements  the  APIs  to  take  the  challenges:  

–  MediaStream  –  RTCPeerConnec6on    –  RTCDataChannel  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  28  

Page 29: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

WebRTC  Challenges:  Signaling  

•  Signaling:  –  session  control  messages,  network  coordina6on,  media  capabili6es,  

meta-­‐data,  error  messages  –  Choose  your  own  messaging  protocol,  e.g.  SDP,  SIP,  XMPP  and    

bi-­‐direc6onal  communica6on  channel,  e.g.  Socket.io  

•  Example:  hdp://www.simpl.info/rtcpeerconnec6on/    

•  Signaling  isn‘t  trivial.  Studying  examples  is  recommended!  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  29  

Page 30: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Signaling  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  30  

hdp://www.html5rocks.com/en/tutorials/webrtc/infrastructure/?redirect_from_locale=de#what-­‐is-­‐signaling  

Page 31: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

RTCPeerConnec$on  API  

•  Does  the  heavy  li~ing  for  peer-­‐to-­‐peer  connec6ons    •  Stable  and  efficient  communica6on  of  streaming  data  •  Responsibilites:  

–  packet  loss  concealment  –  echo  cancella6on  –  bandwidth  adap6vity  –  dynamic  jider  buffering  –  automa6c  gain  control  –  noise  reduc6on  and  suppression  –  image  'cleaning'.  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  31  

hdp://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-­‐rtcpeerconnec6on  

Page 32: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

RTCPeerConnec$on  Methods  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  32  

•  obtain  RTCPeerConnec6on  object:  new RTCPeerConnection();  –  currently,  browser  prefixes  are  required.  

new webkitRTCPeerConnection(server,constraints) !–  Adach  event  handlers  to  this  object,  e.g.  onaddstream  

•  Call:  pc.createOffer(successHandler,errorHandler,constraints) !

•  Answer:!pc.createAnswer(successHandler,errorHandler,constraints) !

•  ICE  Framework  methods,  e.g.    pc.addIceCandidate(candidate); !

hdps://developer.mozilla.org/en-­‐US/docs/Web/API/RTCPeerConnec6on#Basic_Usage  

Page 33: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

More  WebRTC  

•  Further  links:  –  hdp://www.webrtc.org/  (Official  Webpage)  –  hdps://github.com/GoogleChrome/webrtc  (various  WebRTC  Samples)  –  hdps://bitbucket.org/webrtc/codelab  (Video-­‐chat  code  example  with  

NodeJS  and  Socket.io)  –  hdps://en.wikipedia.org/wiki/Interac6ve_Connec6vity_Establishment  

(ICE  Protocol)  –  hdp://simplewebrtc.com/  (WebRTC  library)  –  hdps://talky.io/  (Video  chat  service  powered  by  WebRTC)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  33  

Page 34: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Socket.IO  

•  NodeJS  module  for  event-­‐based,  bidirec6onal  communica6on  •  (near)  real-­‐6me  communica6on    •  Cross-­‐Pla-orm  support  •  Allows  binary  streaming  (important  for  video/audio!)  •  Two  components:  

–  Server  side  module  (NodeJS)  –  Client  side  script  (JavaScript)  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  34  

Page 35: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Socket.io  (server)  var app = require('express')(); !var server = require('http').Server(app); !var io = require('socket.io')(server); !!server.listen(3000); !!app.get('/', function (req, res) { ! res.sendFile(__dirname + '/index.html'); !}); !!io.on('connection', function (socket) { ! socket.emit('news', { hi: 'welcome to the chat!' }); ! socket.on('clientMessage', function (data) { ! console.log(data); ! io.emit('news',data); ! }); !}); !

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  35  

Page 36: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Socket.io  (client)  

<script> !!

var socket = io.connect(); !!

socket.on('news', function (data) { ! console.log(data); !

}); !!

socket.emit('clientMessage','test message'); !</script> !!

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  36  

Page 37: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

PeerChat  by  H.  Kavad  

•  NodeJS  implementa6on  of  a  WebRTC  compliant  video  chat  •  Relies  on  NodeJS  and  Socket.io  for  signaling  •  Clone:  hdps://github.com/Hironate/PeerChat  •  The  API  Key  men6oned  in    

the  Readme  file  is  not    necessary  if  you  do  not    deploy  the  app  to  a    produc6on  environment  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  37  

Page 38: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Assignment  10  

•  Topic:  Browser  PhotoBooth,  PeerChat  modifica6on  •  Due  in:  1  Week  •  Due  date:  19.01.2015  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  38  

Page 39: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Announcements  

•  Remaining  tutorial  dates  /  topics  –  19.01.2015:  Repe66on  –  26.01.2015:  Q&A  

•  There  will  be  another  assignment  next  week  

•  Exam:  –  16.02.2015  14-­‐16h,  Rooms  A140  &  A240  (Main  Building)  –  register  un6l:    09.02.2015  –  de-­‐register  un6l:  13.02.2015  –  If  you  do  not  de-­‐register,  the  adempt  will  be  treated  as  “failed”  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  39  

Page 40: Mul$media*im*Netz* (Online*Mul$media)* - Medieninformatik · Assignment*8:*MEAN*vs.*LAMP* • You&offer&a service&similar&toGoogleKeep,& where&people&can& take&notes&and&createsimple&

Thanks!  What  are  your  ques$ons?  

Ludwig-­‐Maximilians-­‐Universität  München   Online  Mul6media  WS  2014/15  -­‐  Übung  10  -­‐  40