SlideShare a Scribd company logo
Tim Panton
@steely_glint
PUTTING THE WEB INTO
WEBRTC
 Protocol Droid
 Webrtc fan -
 Standards pusher
 Doing my own thing with IOT
 Some consulting
ABOUT: TIM PANTON
@steely_glint - Westhawk Ltd
CHANGE IS COMING
 1905
 Newtonian Physics
 All wrapped up
 Almost…. ->
 Photoelectric effect
 Quantum view of universe
 New possibilities
 WebRTC is like that.
 Changes communications
baseline
 Adding P2P security +context
@steely_glint - Westhawk Ltd
 Pay per min for calls
THE OLD WAY
@steely_glint - Westhawk Ltd
 Twillio will do 1bn webrtc minutes this year
 Most of them in apps like Uber and twiddla
 It is still communication – but in context
 Context first – call second
NOT JUST ‘CALLS’ ANY MORE
@steely_glint - Westhawk Ltd
Don’t underestimate Javascript
Combine
 Cookies/context
 WebGL
 WebAudio
 WebRTC
WEB TOOLS
@steely_glint - Westhawk Ltd
 Setting up a call is about establishing a shared context
 Who am I?
 Who can call who?
 Do you want to speak to me?
 Login + cookies is one way – but there are others
 Text ‘upgrade’ is defacto now.
URLs:
https://appear.in/steely_glint
But that didn’t work for my video-call-my-parrot app.
(YoPet)
CONTEXT
@steely_glint - Westhawk Ltd
 Video effects in high level language
 Realtime
 Built into browser
Examples:
http://seriouslyjs.org/ - real time green-screen in your browser!
http://www.html5rocks.com/en/tutorials/webgl/jsartoolkit_we
brtc/AR_mediaStream.html - magic AR
Can also be applied to remote video streams.
WEBGL
@steely_glint - Westhawk Ltd
 Use video to
 Exchange a token
 Out of band
 Save it
 Proximity based pairing – like bluetooth but easier
 Useful for ‘things’ without a usable keyboard
 Filed a patent on Token choice
(See IIT talk for details)
 Untrusted (federated) middleman.
YOPET DEMO
@steely_glint - Westhawk Ltd
 Late 80’s synth in your browser (https://www.flickr.com/photos/gmacklin/)
WEBAUDIO
@steely_glint - Westhawk Ltd
 http://webaudiodemos.appspot.com/midi-synth/index.html
 https://forestmist.org/share/web-audio-api-demo
LITERALLY
@steely_glint - Westhawk Ltd
 WebAudio + WebRTC
 Chrome supports outbound webRTC streams from WebAudio
 Firefox >=39 supports both directions
 Process your audio before sending it (chrome)
 Filter, delay, fft, convolve
 Combine effects to pitch shift
 Display spectrum
 Arbitrary maths in webworker
 In Firefox you can do the same on the inbound side too
SO WHAT?
@steely_glint - Westhawk Ltd
 No longer need to talk to yourself
 Press a button to inject audio
 No EC or ACG in the way
 Test code only – not production
w i n d o w . w i r e . a p p . r e p o s i t o r y . c a l l . i n j e c t _ a u d i o _ i n t o _ c a l l ( w i r e . a p p . r e p o s i t o r y . c o n v e r s a t i o n . a c t i v e _ c o n v e r s a t i o n ( ) . i d ,
” a u d i o / r e a d y _ t o _ t a l k . m p 3 " )
EXAMPLE – INJECT TEST AUDIO
@steely_glint - Westhawk Ltd
_wrap_local_stream: (stream) =>
wrap_stream = stream
#should test for audio stream type here...
@contex = new window.AudioContext()
@localsource = @context.createMediaStreamSource stream
@localdest = @audio_context.createMediaStreamDestination()
@addeffects()
wrap_stream = @local_audio_dest.stream
return wrap_stream
CODE
@steely_glint - Westhawk Ltd
_suck_in_audio_file: =>
AUDIO_PATH = 'ext/audio/webapp-audio/'
knock_url = "#{AUDIO_PATH}ready_to_talk.mp3"
request = new XMLHttpRequest()
request.open('GET', knock_url, true)
request.responseType = 'arraybuffer'
request.onload = =>
load = (buffer) =>
@knock_audio_buffer = buffer
@logger.log "Loaded audio from #{knock_url}"
fail = =>
@logger.log "Failed to load audio from #{knock_url}"
@audio_context.decodeAudioData request.response, load , fail
request.send();
CODE
@steely_glint - Westhawk Ltd
send_audio_file: =>
# we unhook the mic , play our audio , then reconnect
if @knock_audio_buffer isnt undefined
knock_source = @audio_context.createBufferSource()
knock_source.buffer = @knock_audio_buffer
@local_audio_source.disconnect()
knock_source.connect(@local_audio_dest)
knock_source.onended = =>
@logger.log 'finished knock sound'
knock_source.disconnect(@local_audio_dest)
@_hookup_audio()
@logger.log 'play knock sound'
knock_source.start();
CODE
@steely_glint - Westhawk Ltd
_wrap_remote_stream: (stream) =>
wrap_stream = stream
if @context isnt undefined
#only works in ffox >= 39
@remote_source = @context.createMediaStreamSource
stream
@remote_dest = @context.createMediaStreamDestination()
@remote_audio_source.connect(@remote_audio_dest)
@add_effects2()
wrap_stream = @remote_audio_dest.stream
@logger.log 'Wrapped remote audio stream'
return wrap_stream
CODE
@steely_glint - Westhawk Ltd
 Firefox debug screen
 Various plugboards
 Volume meter
IF YOU LIKE GRAPHICS
@steely_glint - Westhawk Ltd
 Use WebAudio to Inject Audio
 Acoustically couple to test device
 Compare returning stream from DUT
 Measure latency from differences
 Tests Audio and network path
 in Firefox nightly
LATENCY MEASUREMENT
@steely_glint - Westhawk Ltd
 Use WebAudio to do IVR
 Do the automated part locally
 Only connect when actually need agent
 Higher quality audio
 More network resilient
 Much less dialplan?
(use 1m web devs?)
LONGER TERM
@steely_glint - Westhawk Ltd
 Web Browser has rich APIs
 Use them to delight your user
 To make your life easier
 Or both!
 thp@westhawk.co.uk
 @steely_glint
 (thanks to wire.com for examples in this talk)
SUMMARY
@steely_glint - Westhawk Ltd

More Related Content

Similar to Putting the 'web' into webRTC

Push the web with HTML5
Push the web with HTML5Push the web with HTML5
Push the web with HTML5
Stoyan Zhekov
 
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
scottschiller
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
WebExpo
 
From basement to global
From basement to globalFrom basement to global
From basement to global
Michał Kutyła
 
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
Dean Bubley
 
Developing SIP Applications
Developing SIP ApplicationsDeveloping SIP Applications
Developing SIP Applications
Voxeo Corp
 
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San FranciscoHTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
Alessandro Nadalin
 
HTTP/3 for everyone
HTTP/3 for everyoneHTTP/3 for everyone
HTTP/3 for everyone
Daniel Stenberg
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCAlexandre Gouaillard
 
Hello 1 2 3, can you see me now?
Hello 1 2 3, can you see me now?Hello 1 2 3, can you see me now?
Hello 1 2 3, can you see me now?
Kundan Singh
 
RESTful design
RESTful designRESTful design
RESTful design
Robert MacLean
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Soroosh Khodami
 
Best Practices In Implementing Container Image Promotion Pipelines
Best Practices In Implementing Container Image Promotion PipelinesBest Practices In Implementing Container Image Promotion Pipelines
Best Practices In Implementing Container Image Promotion Pipelines
All Things Open
 
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc  2015 HTTP 1, HTTP 2 and folksDevoxx Maroc  2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
Nicolas Martignole
 
Symfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo PragueSymfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo Prague
Pavel Campr
 
HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?
Alessandro Nadalin
 
Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ari
Pascal Cadotte-Michaud
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
Constantine Slisenka
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
Daniel Stenberg
 

Similar to Putting the 'web' into webRTC (20)

Push the web with HTML5
Push the web with HTML5Push the web with HTML5
Push the web with HTML5
 
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
 
- Webexpo 2010
- Webexpo 2010- Webexpo 2010
- Webexpo 2010
 
From basement to global
From basement to globalFrom basement to global
From basement to global
 
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
 
Developing SIP Applications
Developing SIP ApplicationsDeveloping SIP Applications
Developing SIP Applications
 
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San FranciscoHTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
 
HTTP/3 for everyone
HTTP/3 for everyoneHTTP/3 for everyone
HTTP/3 for everyone
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
 
Hello 1 2 3, can you see me now?
Hello 1 2 3, can you see me now?Hello 1 2 3, can you see me now?
Hello 1 2 3, can you see me now?
 
RESTful design
RESTful designRESTful design
RESTful design
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
 
Best Practices In Implementing Container Image Promotion Pipelines
Best Practices In Implementing Container Image Promotion PipelinesBest Practices In Implementing Container Image Promotion Pipelines
Best Practices In Implementing Container Image Promotion Pipelines
 
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc  2015 HTTP 1, HTTP 2 and folksDevoxx Maroc  2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
 
Symfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo PragueSymfony - modern technology in practice, Webexpo Prague
Symfony - modern technology in practice, Webexpo Prague
 
HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?
 
Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ari
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 

More from Tim Panton

10 voipmistakes
10 voipmistakes10 voipmistakes
10 voipmistakes
Tim Panton
 
Simple secure federated identity for webRTC (your new phone number)
Simple secure federated identity for webRTC (your new phone number)Simple secure federated identity for webRTC (your new phone number)
Simple secure federated identity for webRTC (your new phone number)
Tim Panton
 
Kranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtcKranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtc
Tim Panton
 
Ice with that sir? Or what webRTC does once it has a UDP connection
Ice with that sir? Or what webRTC does once it has a UDP connectionIce with that sir? Or what webRTC does once it has a UDP connection
Ice with that sir? Or what webRTC does once it has a UDP connection
Tim Panton
 
Yo pet - building a webRTC app in 20 mins
Yo pet - building a webRTC app in 20 minsYo pet - building a webRTC app in 20 mins
Yo pet - building a webRTC app in 20 mins
Tim Panton
 
Westhawk integration
Westhawk integrationWesthawk integration
Westhawk integrationTim Panton
 
WebRTC Standards overview.
WebRTC Standards overview.WebRTC Standards overview.
WebRTC Standards overview.
Tim Panton
 

More from Tim Panton (7)

10 voipmistakes
10 voipmistakes10 voipmistakes
10 voipmistakes
 
Simple secure federated identity for webRTC (your new phone number)
Simple secure federated identity for webRTC (your new phone number)Simple secure federated identity for webRTC (your new phone number)
Simple secure federated identity for webRTC (your new phone number)
 
Kranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtcKranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtc
 
Ice with that sir? Or what webRTC does once it has a UDP connection
Ice with that sir? Or what webRTC does once it has a UDP connectionIce with that sir? Or what webRTC does once it has a UDP connection
Ice with that sir? Or what webRTC does once it has a UDP connection
 
Yo pet - building a webRTC app in 20 mins
Yo pet - building a webRTC app in 20 minsYo pet - building a webRTC app in 20 mins
Yo pet - building a webRTC app in 20 mins
 
Westhawk integration
Westhawk integrationWesthawk integration
Westhawk integration
 
WebRTC Standards overview.
WebRTC Standards overview.WebRTC Standards overview.
WebRTC Standards overview.
 

Recently uploaded

重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
JeyaPerumal1
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 

Recently uploaded (20)

重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 

Putting the 'web' into webRTC

  • 2.  Protocol Droid  Webrtc fan -  Standards pusher  Doing my own thing with IOT  Some consulting ABOUT: TIM PANTON @steely_glint - Westhawk Ltd
  • 3. CHANGE IS COMING  1905  Newtonian Physics  All wrapped up  Almost…. ->  Photoelectric effect  Quantum view of universe  New possibilities  WebRTC is like that.  Changes communications baseline  Adding P2P security +context @steely_glint - Westhawk Ltd
  • 4.  Pay per min for calls THE OLD WAY @steely_glint - Westhawk Ltd
  • 5.  Twillio will do 1bn webrtc minutes this year  Most of them in apps like Uber and twiddla  It is still communication – but in context  Context first – call second NOT JUST ‘CALLS’ ANY MORE @steely_glint - Westhawk Ltd
  • 6. Don’t underestimate Javascript Combine  Cookies/context  WebGL  WebAudio  WebRTC WEB TOOLS @steely_glint - Westhawk Ltd
  • 7.  Setting up a call is about establishing a shared context  Who am I?  Who can call who?  Do you want to speak to me?  Login + cookies is one way – but there are others  Text ‘upgrade’ is defacto now. URLs: https://appear.in/steely_glint But that didn’t work for my video-call-my-parrot app. (YoPet) CONTEXT @steely_glint - Westhawk Ltd
  • 8.  Video effects in high level language  Realtime  Built into browser Examples: http://seriouslyjs.org/ - real time green-screen in your browser! http://www.html5rocks.com/en/tutorials/webgl/jsartoolkit_we brtc/AR_mediaStream.html - magic AR Can also be applied to remote video streams. WEBGL @steely_glint - Westhawk Ltd
  • 9.  Use video to  Exchange a token  Out of band  Save it  Proximity based pairing – like bluetooth but easier  Useful for ‘things’ without a usable keyboard  Filed a patent on Token choice (See IIT talk for details)  Untrusted (federated) middleman. YOPET DEMO @steely_glint - Westhawk Ltd
  • 10.  Late 80’s synth in your browser (https://www.flickr.com/photos/gmacklin/) WEBAUDIO @steely_glint - Westhawk Ltd
  • 12.  WebAudio + WebRTC  Chrome supports outbound webRTC streams from WebAudio  Firefox >=39 supports both directions  Process your audio before sending it (chrome)  Filter, delay, fft, convolve  Combine effects to pitch shift  Display spectrum  Arbitrary maths in webworker  In Firefox you can do the same on the inbound side too SO WHAT? @steely_glint - Westhawk Ltd
  • 13.  No longer need to talk to yourself  Press a button to inject audio  No EC or ACG in the way  Test code only – not production w i n d o w . w i r e . a p p . r e p o s i t o r y . c a l l . i n j e c t _ a u d i o _ i n t o _ c a l l ( w i r e . a p p . r e p o s i t o r y . c o n v e r s a t i o n . a c t i v e _ c o n v e r s a t i o n ( ) . i d , ” a u d i o / r e a d y _ t o _ t a l k . m p 3 " ) EXAMPLE – INJECT TEST AUDIO @steely_glint - Westhawk Ltd
  • 14. _wrap_local_stream: (stream) => wrap_stream = stream #should test for audio stream type here... @contex = new window.AudioContext() @localsource = @context.createMediaStreamSource stream @localdest = @audio_context.createMediaStreamDestination() @addeffects() wrap_stream = @local_audio_dest.stream return wrap_stream CODE @steely_glint - Westhawk Ltd
  • 15. _suck_in_audio_file: => AUDIO_PATH = 'ext/audio/webapp-audio/' knock_url = "#{AUDIO_PATH}ready_to_talk.mp3" request = new XMLHttpRequest() request.open('GET', knock_url, true) request.responseType = 'arraybuffer' request.onload = => load = (buffer) => @knock_audio_buffer = buffer @logger.log "Loaded audio from #{knock_url}" fail = => @logger.log "Failed to load audio from #{knock_url}" @audio_context.decodeAudioData request.response, load , fail request.send(); CODE @steely_glint - Westhawk Ltd
  • 16. send_audio_file: => # we unhook the mic , play our audio , then reconnect if @knock_audio_buffer isnt undefined knock_source = @audio_context.createBufferSource() knock_source.buffer = @knock_audio_buffer @local_audio_source.disconnect() knock_source.connect(@local_audio_dest) knock_source.onended = => @logger.log 'finished knock sound' knock_source.disconnect(@local_audio_dest) @_hookup_audio() @logger.log 'play knock sound' knock_source.start(); CODE @steely_glint - Westhawk Ltd
  • 17. _wrap_remote_stream: (stream) => wrap_stream = stream if @context isnt undefined #only works in ffox >= 39 @remote_source = @context.createMediaStreamSource stream @remote_dest = @context.createMediaStreamDestination() @remote_audio_source.connect(@remote_audio_dest) @add_effects2() wrap_stream = @remote_audio_dest.stream @logger.log 'Wrapped remote audio stream' return wrap_stream CODE @steely_glint - Westhawk Ltd
  • 18.  Firefox debug screen  Various plugboards  Volume meter IF YOU LIKE GRAPHICS @steely_glint - Westhawk Ltd
  • 19.  Use WebAudio to Inject Audio  Acoustically couple to test device  Compare returning stream from DUT  Measure latency from differences  Tests Audio and network path  in Firefox nightly LATENCY MEASUREMENT @steely_glint - Westhawk Ltd
  • 20.  Use WebAudio to do IVR  Do the automated part locally  Only connect when actually need agent  Higher quality audio  More network resilient  Much less dialplan? (use 1m web devs?) LONGER TERM @steely_glint - Westhawk Ltd
  • 21.  Web Browser has rich APIs  Use them to delight your user  To make your life easier  Or both!  thp@westhawk.co.uk  @steely_glint  (thanks to wire.com for examples in this talk) SUMMARY @steely_glint - Westhawk Ltd