janus @ webrtc meetup stockholm
TRANSCRIPT
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Janus: an open source and general purposeWebRTC gateway (application) server
Lorenzo Miniero@elminiero
WebRTC Stockholm Meetup16th February 2017, Stockholm
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
My 2nd time in Stockholm! (1st was IETF75, 2009)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
So many reasons to love Sweden...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Outline
1 A brief introduction
2 Some contextWebRTC and standardization activities
3 Janus: a general purpose WebRTC gateway (application) serverModular architecture: plugins and APIsDeploying Janus: a few possible topologiesMonitoring and troubleshooting
4 Some practical examplesWhat is Janus used for today, and by whom?
5 Next steps
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Who am I?
• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli
• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)
• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source
• WebRTC rulez!
• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Who am I?
• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli
• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)
• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source
• WebRTC rulez!
• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Who am I?
• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli
• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)
• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source
• WebRTC rulez!
• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Who am I?
• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli
• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)
• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source
• WebRTC rulez!
• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
((*)This is what Napoli looks like in the Winter...)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser• Up to some time ago, no standard solution!
• No interoperability• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)
• RTCWEB (IETF)• Real-Time Communication in WEB browsers WG• Defines protocols and formats to use
• WEBRTC (W3C)• Web Real-Time Communications WG• Defines UI and API to access devices
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser• Up to some time ago, no standard solution!
• No interoperability• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)
• RTCWEB (IETF)• Real-Time Communication in WEB browsers WG• Defines protocols and formats to use
• WEBRTC (W3C)• Web Real-Time Communications WG• Defines UI and API to access devices
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Ok, ok, enough about you... what’s WebRTC about?
• Real-time media in a browser• Up to some time ago, no standard solution!
• No interoperability• Plugins needed to be installed anyway
WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)
• RTCWEB (IETF)• Real-Time Communication in WEB browsers WG• Defines protocols and formats to use
• WEBRTC (W3C)• Web Real-Time Communications WG• Defines UI and API to access devices
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
WebRTC reference architecture
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
The WebRTC protocol suite
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
The WebRTC protocol suite
• Signalling (well, sort of) and Negotiation• Javascript Session Establishment Protocol (JSEP)• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal• Session Traversal Utilities for NAT (STUN)• Traversal Using Relay NAT (TURN)• Interactive Connectivity Establishment (ICE)
• Media Transport and Control• Real-time Transport (and Control) Protocol (RTP/RTCP)• Secure Extensions to RTP (SRTP)• Datagram Transport Layer Security (DTLS)
• Multimedia codecs• Opus audio codec (MTI, Mandatory-to-implement)• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data• WebRTC Data Channels (SCTP)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
The WebRTC protocol suite
• Signalling (well, sort of) and Negotiation• Javascript Session Establishment Protocol (JSEP)• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal• Session Traversal Utilities for NAT (STUN)• Traversal Using Relay NAT (TURN)• Interactive Connectivity Establishment (ICE)
• Media Transport and Control• Real-time Transport (and Control) Protocol (RTP/RTCP)• Secure Extensions to RTP (SRTP)• Datagram Transport Layer Security (DTLS)
• Multimedia codecs• Opus audio codec (MTI, Mandatory-to-implement)• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data• WebRTC Data Channels (SCTP)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
WebRTC reference architecture (again)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Involving a gateway/server (and applications)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Involving different technologies as well
“What is a WebRTC Gateway anyway?”• https://webrtchacks.com/webrtc-gw/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Involving different technologies as well
“What is a WebRTC Gateway anyway?”• https://webrtchacks.com/webrtc-gw/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Janus: a general purpose WebRTC gateway server
“In ancient Roman religion andmyth, Janus [..] is the god ofbeginnings and transitions, andthereby of gates, doors, passages,endings and time. He is usuallydepicted as having two faces, sincehe looks to the future and to thepast.”
— http://en.wikipedia.org/wiki/Janus
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Janus: a general purpose WebRTC gateway server
• A door between the communications past and future• Legacy technologies (the “past”)• WebRTC (the “future”)
JanusGeneral purpose, open source WebRTC gateway• https://github.com/meetecho/janus-gateway• Demos and documentation: https://janus.conf.meetecho.com• Community: https://groups.google.com/forum/#!forum/meetecho-janus
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data
• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data
• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data
• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Modular architecture
• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)
• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data
• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Extensible Architecture and API
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Extensible Architecture and API
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Plugins as “bricks”
• Each plugin is a feature, not an application
• Application can be composed out of different features• Features as “bricks” for a complex scenario
• A few examples...• Multimedia conferencing with PSTN support
• Video Room (participants video & screen) + SIP (participants audio)
• Webinar with Q&A
• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)
• Social TV
• Streaming (TV channel) + Video Room (interaction)
• Contact center / Communication in social networks
• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Plugins as “bricks”
• Each plugin is a feature, not an application
• Application can be composed out of different features• Features as “bricks” for a complex scenario
• A few examples...• Multimedia conferencing with PSTN support
• Video Room (participants video & screen) + SIP (participants audio)
• Webinar with Q&A
• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)
• Social TV
• Streaming (TV channel) + Video Room (interaction)
• Contact center / Communication in social networks
• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Webinar with Q/A
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Social TV
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Deploying Janus: a few possible topologies
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Anything wrong? Check the Admin API!
• Requests/response API to interrogate Janus• Query server capabilities• Control some aspects (e.g., enable/disable debugging)• Inspect handles and WebRTC “internals”
• What about asynchronous events? More on that in a minute!
http://www.meetecho.com/blog/understanding-the-janus-admin-api/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Admin API overview: polling for information
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs constant polling, and data is unavailable after the session ends
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• “Sample Event Handler” forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• https://fosdem.org/2017/schedule/event/janus/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs constant polling, and data is unavailable after the session ends
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• “Sample Event Handler” forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• https://fosdem.org/2017/schedule/event/janus/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
An asynchronous approach to monitoring/troubleshooting
• Admin API is cool, but is request/response...
• Needs constant polling, and data is unavailable after the session ends
• What about an asynchronous approach?
• A new mechanism: Event Handlers
• Core and plugins generate events• Custom modules can subscribe to and handle them
• e.g., save to DB, send to external service, CDR, etc.
• “Sample Event Handler” forwards JSON events via HTTP
• Learning more with practical examples (node.js + DB)
• http://www.meetecho.com/blog/event-handlers-a-practical-example/
• http://www.meetecho.com/blog/correlating-janus-event-handlers/
• https://fosdem.org/2017/schedule/event/janus/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Event Handlers overview: routing and managing async events
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
A first real integration: HEPIC (Homer++)
https://fosdem.org/2017/schedule/event/homer/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens
• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens
• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens
• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens
• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Stressing Janus: Jattack!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)
• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)
• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)
• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.
• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
A “silly” use case: The Jumping Sumo!
https://www.youtube.com/watch?v=isGSnMlKcss
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
A “silly” use case: The Jumping Sumo!
https://www.youtube.com/watch?v=isGSnMlKcss
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
“Matrix wins Best of Show at WebRTC World!”
https://www.youtube.com/watch?v=OMzDklvDS3c
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
“Matrix wins Best of Show at WebRTC World!”
https://www.youtube.com/watch?v=NpBStIIq6fM
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Jangouts (for "Janus Hangouts" ,)
https://github.com/jangouts/jangouts
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
SylkServer (SIP/XMPP Application Server)
http://sylkserver.com/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
SylkServer (SIP/XMPP Application Server)
http://sylkserver.com/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Slack (team co-working)
https://webrtchacks.com/dear-slack/https://webrtchacks.com/slack-webrtc-slacking/
https://slack.engineering/calls-is-it-you-or-is-it-me-f5d36749e8edhttps://webrtchacks.com/slack-video/
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Mattermost (team co-working)
https://docs.mattermost.com/deployment/webrtc.htmlhttps://github.com/mattermost/mattermost-webrtc
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Beam (videogame streaming)
https://beam.pro/https://github.com/WatchBeam/ftl-sdk
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Lenovo’s AirClass (e-learning)
https://www.airclass.com
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Sqwiggle / Speak.io (team co-working)
https://www.sqwiggle.comhttps://speak.io
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Sqwiggle / Speak.io (team co-working)
https://www.sqwiggle.comhttps://speak.io
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Veeting rooms (web conferencing)
https://www.veeting.com
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
AliceX (let’s call it “virtual reality” ,)
https://www.alicex.com
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
What to do next?
• Finalize the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• Keep on improving and fixing things
• Code cleanup, reference counters, new modules, ...
• A monitoring/troubleshooting framework on top of Event Handlers
• Test Test Test!
• Jattack will greatly help here
Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!
Janus
L. Miniero
Intro
WebRTCStandardization
JanusModules and APIs
Deploying
Troubleshooting
ExamplesA few examples
Next steps
Questions?
@elminiero@meetecho