SlideShare a Scribd company logo
1 of 28
WebRTC Standards Webinar & Q&A
Amir Zmora
TheNewDialTone
Jan-Ivar Bruaroey
Mozilla
Watch video recording of this session
http://ccst.io/e/webrtcstandards28
Jan-Ivar Bruaroey
jib on irc.mozilla.org #media
@jibrewery on Twitter
On the Firefox Media team, working to implement WebRTC:
getUserMedia(), getDisplayMedia(), RTCPeerConnection().
W3C editor of mediacapture-main and webrtc-pc.
Contributor to mediacapture-screen-share and other specs.
I’m currently implementing getDisplayMedia() in Firefox, and
contributing to finish off its specification.
Session sponsored by
WebRTC.ventures is a custom design and development shop dedicated to building WebRTC based applications
for web and mobile. We have built end-to-end broadcast solutions for events and entertainment clients,
telehealth solutions for multiple clients, live support tools, as well as communication tools for a variety of other
applications. WebRTC.ventures is a recognized development partner of TokBox and has also built native
WebRTC solutions
We use CrowdCast….It’s WebRTC
getDisplayMedia 1.0
Standard Screen-sharing
Outline
1. Introduction to getDisplayMedia()
2. Constraints for downscaling
3. Finalizing the spec.
4. Security concerns. Full-screen/browser tab-sharing is
“scary”.
5. Permissions
6. Iframe permissions (Feature Policy)
History
Since 2013-14,Chrome and Firefox have supported screen capture through incompatible
proprietary and non-standard extensions of getUserMedia().
Firefox with the mediaSource constraint (dropped white-list in 52).
Chrome requires an extension be installed; with chromeMediaSource constraint.
Progress lingered on standard specification, until recently.
Chrome to drop inline installation of extensions soon; new friction injects urgency.
W3C Screen Capture specification
Spec doc: mediacapture-screen-share.
Standard way to let websites request the end-user to share their display of choice.
Nearing completion. Implementations available:
• Edge: Yes (early 2018 draft)
• Chrome: In development (yes behind pref in Canary, early 2018 draft)
• Safari: In development
• Firefox: In development. Targeting 64 or 65.
• Adapter.js: Yes (early 2018 draft), w/setup in Firefox/Chrome w/Chrome plugin.
Screen-sharing with getDisplayMedia()
Early 2018:
video.srcObject = await navigator.getDisplayMedia({video: true});
Downscaling with track.applyConstraints()
Early 2018: constraints on gDM forbidden. Mustn’t influence user-selection. Instead:
const stream = video.srcObject = await navigator.getDisplayMedia({video: true});
// Got it! Now downscale to not be huge
await stream.getVideoTracks()[0].applyConstraints({width: 320, height: 200});
Downscaling with getDisplayMedia()
Late 2018: constraints allowed, but browsers MUST apply only after user selection.
stream = await navigator.getDisplayMedia({video: {width: 320, height: 200}});
// Got it! And it’s downscaled already.
Simpler. But what about OverconstrainedError? Would stink post-prompt (more later).
Downscaling with getDisplayMedia()
Of course you can still use applyConstraints and the rest of the API:
stream = await navigator.getDisplayMedia({video: {width: 320, height: 200}});
const [track] = stream.getVideoTracks();
const halve = async () => {
const {width, height} = track.getSettings();
await track.applyConstraints({width: width / 2, height: height / 2});
}
halve();
Constraints in getDisplayMedia() 1.0
Some differences from camera. Constraints are for downscaling, not discovery.
Therefore, the following constraint keywords are disallowed:
await navigator.getDisplayMedia({video: {width: {min: 320}}); // TypeError
await navigator.getDisplayMedia({video: {width: {exact: 320}}); // TypeError
await navigator.getDisplayMedia({video: {advanced: [{width: 320}]}); // TypeError
But the ideal and max constraints are allowed (more on this later).
This eliminates the risk of post-prompt OverconstrainedError.
Again, getDisplayMedia() is not for discovery.
Captured windows may have surprising aspect.
await gDM({video: {width: 320, height: 200}});
Downscaling always preserves aspect, never crops
Best effort based on fitness distance.
There’s some question whether fitness distance alone
gives good results.
Firefox uses-area-based approximation when aspects
differ. Allowed to go out of bounds.
ideal
Why? End-user might resize window extremely tall or wide during live capture.
await gDM({video: {width: {ideal:320, max:320}, height: {ideal:200, max:340}}});
Use max constraint to define outer bounds
Having two forms of constraints allows room for aspect
changes within limits.
If end-user makes window any taller, it’s always
downscaled to fit within outer bounds.
ideal
max
User resizes live. Video stays inside bounds
How to detect Retina displays
These render at 2x size. Unexpected? Detectable? The plan is to downscale these to ½ by default to
render at the expected same scale. This also makes it detectable:
stream = await navigator.getDisplayMedia({video: true}); // unconstrained
const [track] = stream.getVideoTracks();
const isRetina = track.getSettings().resizeMode != ‘none’; // already downscaled?
// I have 1 gigabit upload, no defaults for me, I want the whole enchilada
await track.applyConstraints({width: 9999, height: 9999}); // no worry no upscale
How to detect Retina displays (alternative)
Another approach that could someday work with other constraints applied:
stream = await navigator.getDisplayMedia({video: myConstraints}); // constrained
const [track] = stream.getVideoTracks();
const {width, height} = track.getSettings();
const cap = track.getCapabilities();
const isRetina = width < cap.width.max || height < cap.height.max;
await track.applyConstraints({width: cap.width.max, height: cap.height.max});
But this depends on expectations of getCapabilities() for windows that change size.
Adapter.js polyfill
Works in Firefox (and Edge of course): https://jsfiddle.net/jib1/q75yb8pf/
adapter.browserShim.shimGetDisplayMedia(window, ‘window’); // or ‘screen’
const stream = video.srcObject = await navigator.getDisplayMedia({video: true});
We will combine “screen” and “window” choices in Firefox Nightly soon.
Constraint support demo: https://jsfiddle.net/jib1/dkt5wexz/
Works with Firefox and Canary (Edge does not allow constraints on getDisplayMedia)
Shim for Chrome plugin is more involved. Google “adapter.js getDisplayMedia”.
Finalizing the spec: How to ask for audio?
This isn’t in the spec yet. But Chrome apparently has this ability, but only for browser tabs. Maybe:
await navigator.getDisplayMedia({video: true, audio: true});
Should this fail immediately with OverconstrainedError if audio is unsupported, or just return a
video track with no audio?
Some sources may have audio, others may not. How to handle that? Silence?
What about:
await navigator.getDisplayMedia({audio: true});
?
Security concerns
Full-screen/browser sharing is scary!
Not just passive threats.
If a web surface under site control is
captured, that website has keys to the car,
and can iframe-navigate as the logged-in
user effectively.
Sidesteps cross-origin protections.
Firefox warns, but hard to explain !
Google “share screen trust” for more
SecureContext
getDisplayMedia() will be https only, pending w3c/mediacapture-screen-share#77
if (!(‘getDisplayMedia’ in navigator)) {
// http or unsupported in browser
return;
}
Persistent “granted” permissions are forbidden.
Persistent “denied” permissions are allowed.
Prompts user before every access.
Website cannot narrow user choice,
(to avoid steering them toward scary sources).
Spec recommends elevated permission for scary sources.
Question: How to prompt for video + audio?
Permissions
How to tackle requests from iframes?
Users don’t read URLs in prompts! Too hard.
wicg.github.io/feature-policy to the rescue.
Says: All grants to top-level domain.
It’s up to top-level domain to delegate to iframes.
Similar to camera and microphone:
<iframe allow="camera; microphone; display">
Disallow by default. navigator.getDisplayMedia remains but throws SecurityError
Should “display” cover both video and related audio?
Iframe permissions (Feature Policy) Cross-origin domain!
“screen” or
“display”?
Questions? Use-cases?
We’re interested in hearing of screen-sharing use-cases we haven’t thought of.
For instance, appear.in uses screen-sharing to record a WebRTC meeting.
Audio use-cases? Any not covered by web-audio? Audio-only?
Do security measures seem sufficient? Expect any different in Private Browsing?
?
Session sponsored by
WebRTC Standards Webinar & Q&A
Amir Zmora
TheNewDialTone
Jan-Ivar Bruaroey
Mozilla

More Related Content

What's hot

Making the HTML5 Video element interactive
Making the HTML5 Video element interactiveMaking the HTML5 Video element interactive
Making the HTML5 Video element interactiveCharles Hudson
 
HTML5 APIs - The New Frontier
HTML5 APIs - The New FrontierHTML5 APIs - The New Frontier
HTML5 APIs - The New FrontierRobert Nyman
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[CSSDevConf] Adaptive Images in Responsive Web Design 2014
[CSSDevConf] Adaptive Images in Responsive Web Design 2014[CSSDevConf] Adaptive Images in Responsive Web Design 2014
[CSSDevConf] Adaptive Images in Responsive Web Design 2014Christopher Schmitt
 
Video.js - How to build and HTML5 Video Player
Video.js - How to build and HTML5 Video PlayerVideo.js - How to build and HTML5 Video Player
Video.js - How to build and HTML5 Video Playersteveheffernan
 
Amp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryAmp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryRaunak Hajela
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...CodelyTV
 
[wvbcn] Adaptive Images in Responsive Web Design
[wvbcn] Adaptive Images in Responsive Web Design[wvbcn] Adaptive Images in Responsive Web Design
[wvbcn] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)CodelyTV
 
[funka] Adaptive Images in Responsive Web Design
[funka] Adaptive Images in Responsive Web Design[funka] Adaptive Images in Responsive Web Design
[funka] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosGreg Schechter
 
[parisweb] Adaptive Images in Responsive Web Design
[parisweb] Adaptive Images in Responsive Web Design[parisweb] Adaptive Images in Responsive Web Design
[parisweb] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
DoctypeHTML5 (Hyderabad) Presentation on Multimedia
DoctypeHTML5 (Hyderabad) Presentation on MultimediaDoctypeHTML5 (Hyderabad) Presentation on Multimedia
DoctypeHTML5 (Hyderabad) Presentation on MultimediaParashuram N
 
State of Media Accessibility in HTML5
State of Media Accessibility in HTML5State of Media Accessibility in HTML5
State of Media Accessibility in HTML5Silvia Pfeiffer
 
Taking HTML5 video a step further
Taking HTML5 video a step furtherTaking HTML5 video a step further
Taking HTML5 video a step furtherSilvia Pfeiffer
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video TutorialSilvia Pfeiffer
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 

What's hot (20)

Making the HTML5 Video element interactive
Making the HTML5 Video element interactiveMaking the HTML5 Video element interactive
Making the HTML5 Video element interactive
 
HTML5 APIs - The New Frontier
HTML5 APIs - The New FrontierHTML5 APIs - The New Frontier
HTML5 APIs - The New Frontier
 
[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design[peachpit] Adaptive Images in Responsive Web Design
[peachpit] Adaptive Images in Responsive Web Design
 
[CSSDevConf] Adaptive Images in Responsive Web Design 2014
[CSSDevConf] Adaptive Images in Responsive Web Design 2014[CSSDevConf] Adaptive Images in Responsive Web Design 2014
[CSSDevConf] Adaptive Images in Responsive Web Design 2014
 
Video.js - How to build and HTML5 Video Player
Video.js - How to build and HTML5 Video PlayerVideo.js - How to build and HTML5 Video Player
Video.js - How to build and HTML5 Video Player
 
Amp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content DeliveryAmp by Google: The Present And Future Of Quick Content Delivery
Amp by Google: The Present And Future Of Quick Content Delivery
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
 
[wvbcn] Adaptive Images in Responsive Web Design
[wvbcn] Adaptive Images in Responsive Web Design[wvbcn] Adaptive Images in Responsive Web Design
[wvbcn] Adaptive Images in Responsive Web Design
 
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
 
[funka] Adaptive Images in Responsive Web Design
[funka] Adaptive Images in Responsive Web Design[funka] Adaptive Images in Responsive Web Design
[funka] Adaptive Images in Responsive Web Design
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat Videos
 
[parisweb] Adaptive Images in Responsive Web Design
[parisweb] Adaptive Images in Responsive Web Design[parisweb] Adaptive Images in Responsive Web Design
[parisweb] Adaptive Images in Responsive Web Design
 
[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design
 
DoctypeHTML5 (Hyderabad) Presentation on Multimedia
DoctypeHTML5 (Hyderabad) Presentation on MultimediaDoctypeHTML5 (Hyderabad) Presentation on Multimedia
DoctypeHTML5 (Hyderabad) Presentation on Multimedia
 
State of Media Accessibility in HTML5
State of Media Accessibility in HTML5State of Media Accessibility in HTML5
State of Media Accessibility in HTML5
 
JS Days Mobile Meow
JS Days Mobile MeowJS Days Mobile Meow
JS Days Mobile Meow
 
Taking HTML5 video a step further
Taking HTML5 video a step furtherTaking HTML5 video a step further
Taking HTML5 video a step further
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video Tutorial
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Web Apps
Web AppsWeb Apps
Web Apps
 

Similar to WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0

WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3Amir Zmora
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
WebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperabilityWebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperabilityAmir Zmora
 
Web rtc standards live session #13 - The Browser-Standards Gap
Web rtc standards live session #13 - The Browser-Standards GapWeb rtc standards live session #13 - The Browser-Standards Gap
Web rtc standards live session #13 - The Browser-Standards GapAmir Zmora
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTCArt Matsak
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxHow to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxBOSC Tech Labs
 
WebRTC ... GWT & in-browser computation
WebRTC ... GWT & in-browser computationWebRTC ... GWT & in-browser computation
WebRTC ... GWT & in-browser computationJooinK
 
Isolating GPU Access in its Own Process
Isolating GPU Access in its Own ProcessIsolating GPU Access in its Own Process
Isolating GPU Access in its Own ProcessPatricia Aas
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...jemije2490
 
SkyViewer: An in-browser solution to fast video calling
SkyViewer: An in-browser solution to fast video callingSkyViewer: An in-browser solution to fast video calling
SkyViewer: An in-browser solution to fast video callingKaivalya Shah
 
The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021Arnaud BUDKIEWICZ
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...Igalia
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms philn2
 
No drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightNo drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightMastacheata1
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
Ubuntu And Parental Controls
Ubuntu And Parental ControlsUbuntu And Parental Controls
Ubuntu And Parental Controlsjasonholtzapple
 

Similar to WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0 (20)

WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design
 
WebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperabilityWebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperability
 
Web rtc standards live session #13 - The Browser-Standards Gap
Web rtc standards live session #13 - The Browser-Standards GapWeb rtc standards live session #13 - The Browser-Standards Gap
Web rtc standards live session #13 - The Browser-Standards Gap
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTC
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxHow to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
 
WebRTC ... GWT & in-browser computation
WebRTC ... GWT & in-browser computationWebRTC ... GWT & in-browser computation
WebRTC ... GWT & in-browser computation
 
Isolating GPU Access in its Own Process
Isolating GPU Access in its Own ProcessIsolating GPU Access in its Own Process
Isolating GPU Access in its Own Process
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
Bring Continuous Integration to Your Laptop With the Drone CI Docker Extensio...
 
SkyViewer: An in-browser solution to fast video calling
SkyViewer: An in-browser solution to fast video callingSkyViewer: An in-browser solution to fast video calling
SkyViewer: An in-browser solution to fast video calling
 
The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms
 
No drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightNo drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwright
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Ubuntu And Parental Controls
Ubuntu And Parental ControlsUbuntu And Parental Controls
Ubuntu And Parental Controls
 

More from Amir Zmora

FlexiWAN Webinar - The Role of Open Source in Your SD-WAN Strategy
FlexiWAN Webinar - The Role of Open Source in Your SD-WAN StrategyFlexiWAN Webinar - The Role of Open Source in Your SD-WAN Strategy
FlexiWAN Webinar - The Role of Open Source in Your SD-WAN StrategyAmir Zmora
 
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...Amir Zmora
 
WebRTC Standards & Implementation Q&A - IP address privacy revisited
WebRTC Standards & Implementation Q&A - IP address privacy revisitedWebRTC Standards & Implementation Q&A - IP address privacy revisited
WebRTC Standards & Implementation Q&A - IP address privacy revisitedAmir Zmora
 
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meeting
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meetingWebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meeting
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meetingAmir Zmora
 
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...Amir Zmora
 
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0Amir Zmora
 
WebRTC Standards & Implementation Q&A - The Future is Now2!
WebRTC Standards & Implementation Q&A - The Future is Now2!WebRTC Standards & Implementation Q&A - The Future is Now2!
WebRTC Standards & Implementation Q&A - The Future is Now2!Amir Zmora
 
WebRTC Standards & Implementation Q&A - The Future is Now!
WebRTC Standards & Implementation Q&A - The Future is Now!WebRTC Standards & Implementation Q&A - The Future is Now!
WebRTC Standards & Implementation Q&A - The Future is Now!Amir Zmora
 
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...Amir Zmora
 
WebRTC Standards & Implementation Q&A - WebRTC Constrains
WebRTC Standards & Implementation Q&A - WebRTC ConstrainsWebRTC Standards & Implementation Q&A - WebRTC Constrains
WebRTC Standards & Implementation Q&A - WebRTC ConstrainsAmir Zmora
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...Amir Zmora
 
WebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support ChangesWebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support ChangesAmir Zmora
 
WebRTC Webinar & Q&A - Standards Update
WebRTC Webinar & Q&A - Standards UpdateWebRTC Webinar & Q&A - Standards Update
WebRTC Webinar & Q&A - Standards UpdateAmir Zmora
 
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...Amir Zmora
 
WebRTC Webinar & Q&A - Sending DTMF in WebRTC the standard way
WebRTC Webinar & Q&A -  Sending DTMF in WebRTC the standard wayWebRTC Webinar & Q&A -  Sending DTMF in WebRTC the standard way
WebRTC Webinar & Q&A - Sending DTMF in WebRTC the standard wayAmir Zmora
 
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream Recording
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream RecordingWebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream Recording
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream RecordingAmir Zmora
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...Amir Zmora
 
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTC
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTCWebRTC Webinar & Q&A - Debugging Networking Issues in WebRTC
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTCAmir Zmora
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationAmir Zmora
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityAmir Zmora
 

More from Amir Zmora (20)

FlexiWAN Webinar - The Role of Open Source in Your SD-WAN Strategy
FlexiWAN Webinar - The Role of Open Source in Your SD-WAN StrategyFlexiWAN Webinar - The Role of Open Source in Your SD-WAN Strategy
FlexiWAN Webinar - The Role of Open Source in Your SD-WAN Strategy
 
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...
WebRTC Standards & Implementation Q&A - All You Wanted to Know About W3C TPAC...
 
WebRTC Standards & Implementation Q&A - IP address privacy revisited
WebRTC Standards & Implementation Q&A - IP address privacy revisitedWebRTC Standards & Implementation Q&A - IP address privacy revisited
WebRTC Standards & Implementation Q&A - IP address privacy revisited
 
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meeting
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meetingWebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meeting
WebRTC Standards & Implementation Q&A - WebRTC NV planning face-to-face meeting
 
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...
WebRTC Standards & Implementation Q&A - Implications of WebRTC 1.0 changes an...
 
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
WebRTC Standards & Implementation Q&A - Testing WebRTC 1.0
 
WebRTC Standards & Implementation Q&A - The Future is Now2!
WebRTC Standards & Implementation Q&A - The Future is Now2!WebRTC Standards & Implementation Q&A - The Future is Now2!
WebRTC Standards & Implementation Q&A - The Future is Now2!
 
WebRTC Standards & Implementation Q&A - The Future is Now!
WebRTC Standards & Implementation Q&A - The Future is Now!WebRTC Standards & Implementation Q&A - The Future is Now!
WebRTC Standards & Implementation Q&A - The Future is Now!
 
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
 
WebRTC Standards & Implementation Q&A - WebRTC Constrains
WebRTC Standards & Implementation Q&A - WebRTC ConstrainsWebRTC Standards & Implementation Q&A - WebRTC Constrains
WebRTC Standards & Implementation Q&A - WebRTC Constrains
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
WebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support ChangesWebRTC Standards & Implementation Q&A - Legacy API Support Changes
WebRTC Standards & Implementation Q&A - Legacy API Support Changes
 
WebRTC Webinar & Q&A - Standards Update
WebRTC Webinar & Q&A - Standards UpdateWebRTC Webinar & Q&A - Standards Update
WebRTC Webinar & Q&A - Standards Update
 
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...WebRTC Webinar & Q&A -  All About Microsoft & WebRTC Hosting Guest Speaker Ja...
WebRTC Webinar & Q&A - All About Microsoft & WebRTC Hosting Guest Speaker Ja...
 
WebRTC Webinar & Q&A - Sending DTMF in WebRTC the standard way
WebRTC Webinar & Q&A -  Sending DTMF in WebRTC the standard wayWebRTC Webinar & Q&A -  Sending DTMF in WebRTC the standard way
WebRTC Webinar & Q&A - Sending DTMF in WebRTC the standard way
 
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream Recording
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream RecordingWebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream Recording
WebRTC Webinar & Q&A - W3C WebRTC W3C MediaStream Recording
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTC
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTCWebRTC Webinar & Q&A - Debugging Networking Issues in WebRTC
WebRTC Webinar & Q&A - Debugging Networking Issues in WebRTC
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

WebRTC Standards & Implementation Q&A - getDisplayMedia 1.0

  • 1. WebRTC Standards Webinar & Q&A Amir Zmora TheNewDialTone Jan-Ivar Bruaroey Mozilla
  • 2. Watch video recording of this session http://ccst.io/e/webrtcstandards28
  • 3. Jan-Ivar Bruaroey jib on irc.mozilla.org #media @jibrewery on Twitter On the Firefox Media team, working to implement WebRTC: getUserMedia(), getDisplayMedia(), RTCPeerConnection(). W3C editor of mediacapture-main and webrtc-pc. Contributor to mediacapture-screen-share and other specs. I’m currently implementing getDisplayMedia() in Firefox, and contributing to finish off its specification.
  • 4. Session sponsored by WebRTC.ventures is a custom design and development shop dedicated to building WebRTC based applications for web and mobile. We have built end-to-end broadcast solutions for events and entertainment clients, telehealth solutions for multiple clients, live support tools, as well as communication tools for a variety of other applications. WebRTC.ventures is a recognized development partner of TokBox and has also built native WebRTC solutions
  • 7. Outline 1. Introduction to getDisplayMedia() 2. Constraints for downscaling 3. Finalizing the spec. 4. Security concerns. Full-screen/browser tab-sharing is “scary”. 5. Permissions 6. Iframe permissions (Feature Policy)
  • 8. History Since 2013-14,Chrome and Firefox have supported screen capture through incompatible proprietary and non-standard extensions of getUserMedia(). Firefox with the mediaSource constraint (dropped white-list in 52). Chrome requires an extension be installed; with chromeMediaSource constraint. Progress lingered on standard specification, until recently. Chrome to drop inline installation of extensions soon; new friction injects urgency.
  • 9. W3C Screen Capture specification Spec doc: mediacapture-screen-share. Standard way to let websites request the end-user to share their display of choice. Nearing completion. Implementations available: • Edge: Yes (early 2018 draft) • Chrome: In development (yes behind pref in Canary, early 2018 draft) • Safari: In development • Firefox: In development. Targeting 64 or 65. • Adapter.js: Yes (early 2018 draft), w/setup in Firefox/Chrome w/Chrome plugin.
  • 10. Screen-sharing with getDisplayMedia() Early 2018: video.srcObject = await navigator.getDisplayMedia({video: true});
  • 11. Downscaling with track.applyConstraints() Early 2018: constraints on gDM forbidden. Mustn’t influence user-selection. Instead: const stream = video.srcObject = await navigator.getDisplayMedia({video: true}); // Got it! Now downscale to not be huge await stream.getVideoTracks()[0].applyConstraints({width: 320, height: 200});
  • 12. Downscaling with getDisplayMedia() Late 2018: constraints allowed, but browsers MUST apply only after user selection. stream = await navigator.getDisplayMedia({video: {width: 320, height: 200}}); // Got it! And it’s downscaled already. Simpler. But what about OverconstrainedError? Would stink post-prompt (more later).
  • 13. Downscaling with getDisplayMedia() Of course you can still use applyConstraints and the rest of the API: stream = await navigator.getDisplayMedia({video: {width: 320, height: 200}}); const [track] = stream.getVideoTracks(); const halve = async () => { const {width, height} = track.getSettings(); await track.applyConstraints({width: width / 2, height: height / 2}); } halve();
  • 14. Constraints in getDisplayMedia() 1.0 Some differences from camera. Constraints are for downscaling, not discovery. Therefore, the following constraint keywords are disallowed: await navigator.getDisplayMedia({video: {width: {min: 320}}); // TypeError await navigator.getDisplayMedia({video: {width: {exact: 320}}); // TypeError await navigator.getDisplayMedia({video: {advanced: [{width: 320}]}); // TypeError But the ideal and max constraints are allowed (more on this later). This eliminates the risk of post-prompt OverconstrainedError. Again, getDisplayMedia() is not for discovery.
  • 15. Captured windows may have surprising aspect. await gDM({video: {width: 320, height: 200}}); Downscaling always preserves aspect, never crops Best effort based on fitness distance. There’s some question whether fitness distance alone gives good results. Firefox uses-area-based approximation when aspects differ. Allowed to go out of bounds. ideal
  • 16. Why? End-user might resize window extremely tall or wide during live capture. await gDM({video: {width: {ideal:320, max:320}, height: {ideal:200, max:340}}}); Use max constraint to define outer bounds Having two forms of constraints allows room for aspect changes within limits. If end-user makes window any taller, it’s always downscaled to fit within outer bounds. ideal max User resizes live. Video stays inside bounds
  • 17. How to detect Retina displays These render at 2x size. Unexpected? Detectable? The plan is to downscale these to ½ by default to render at the expected same scale. This also makes it detectable: stream = await navigator.getDisplayMedia({video: true}); // unconstrained const [track] = stream.getVideoTracks(); const isRetina = track.getSettings().resizeMode != ‘none’; // already downscaled? // I have 1 gigabit upload, no defaults for me, I want the whole enchilada await track.applyConstraints({width: 9999, height: 9999}); // no worry no upscale
  • 18. How to detect Retina displays (alternative) Another approach that could someday work with other constraints applied: stream = await navigator.getDisplayMedia({video: myConstraints}); // constrained const [track] = stream.getVideoTracks(); const {width, height} = track.getSettings(); const cap = track.getCapabilities(); const isRetina = width < cap.width.max || height < cap.height.max; await track.applyConstraints({width: cap.width.max, height: cap.height.max}); But this depends on expectations of getCapabilities() for windows that change size.
  • 19. Adapter.js polyfill Works in Firefox (and Edge of course): https://jsfiddle.net/jib1/q75yb8pf/ adapter.browserShim.shimGetDisplayMedia(window, ‘window’); // or ‘screen’ const stream = video.srcObject = await navigator.getDisplayMedia({video: true}); We will combine “screen” and “window” choices in Firefox Nightly soon. Constraint support demo: https://jsfiddle.net/jib1/dkt5wexz/ Works with Firefox and Canary (Edge does not allow constraints on getDisplayMedia) Shim for Chrome plugin is more involved. Google “adapter.js getDisplayMedia”.
  • 20. Finalizing the spec: How to ask for audio? This isn’t in the spec yet. But Chrome apparently has this ability, but only for browser tabs. Maybe: await navigator.getDisplayMedia({video: true, audio: true}); Should this fail immediately with OverconstrainedError if audio is unsupported, or just return a video track with no audio? Some sources may have audio, others may not. How to handle that? Silence? What about: await navigator.getDisplayMedia({audio: true}); ?
  • 21. Security concerns Full-screen/browser sharing is scary! Not just passive threats. If a web surface under site control is captured, that website has keys to the car, and can iframe-navigate as the logged-in user effectively. Sidesteps cross-origin protections. Firefox warns, but hard to explain ! Google “share screen trust” for more
  • 22. SecureContext getDisplayMedia() will be https only, pending w3c/mediacapture-screen-share#77 if (!(‘getDisplayMedia’ in navigator)) { // http or unsupported in browser return; }
  • 23. Persistent “granted” permissions are forbidden. Persistent “denied” permissions are allowed. Prompts user before every access. Website cannot narrow user choice, (to avoid steering them toward scary sources). Spec recommends elevated permission for scary sources. Question: How to prompt for video + audio? Permissions
  • 24. How to tackle requests from iframes? Users don’t read URLs in prompts! Too hard. wicg.github.io/feature-policy to the rescue. Says: All grants to top-level domain. It’s up to top-level domain to delegate to iframes. Similar to camera and microphone: <iframe allow="camera; microphone; display"> Disallow by default. navigator.getDisplayMedia remains but throws SecurityError Should “display” cover both video and related audio? Iframe permissions (Feature Policy) Cross-origin domain! “screen” or “display”?
  • 25. Questions? Use-cases? We’re interested in hearing of screen-sharing use-cases we haven’t thought of. For instance, appear.in uses screen-sharing to record a WebRTC meeting. Audio use-cases? Any not covered by web-audio? Audio-only? Do security measures seem sufficient? Expect any different in Private Browsing?
  • 26. ?
  • 28. WebRTC Standards Webinar & Q&A Amir Zmora TheNewDialTone Jan-Ivar Bruaroey Mozilla