SlideShare a Scribd company logo
1 of 64
Download to read offline
Bringing WebRTC to producers using NDI
Lorenzo Miniero
ClueCon TGI2021
February 17th 2021
Who am I?
Lorenzo Miniero
• Ph.D @ UniNA
• Chairman @ Meetecho
• Main author of Janus®
Contacts and info
• lorenzo@meetecho.com
• https://twitter.com/elminiero
• https://www.slideshare.net/LorenzoMiniero
• https://soundcloud.com/lminiero
Just a few words on Meetecho
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Completely independent from the University
• Focus on real-time multimedia applications
• Strong perspective on standardization and open source
• Several activities
• Consulting services
• Commercial support and Janus licenses
• Streaming of live events (IETF, ACM, etc.)
• Proudly brewed in sunny Napoli, Italy
Home Sweet Home!
You may have heard of NDI already
https://youtu.be/qazlTnSjVzA?t=3703 (ClueCon 2020 Dangerous Demos)
Broadcasters love NDI
https://www.meetecho.com/blog/webrtc-ndi/
https://www.meetecho.com/blog/webrtc-ndi-part-2/
What is NDI?
• Network Device Interface (NDI)
• Royalty-free software standard developed by NewTek
• https://www.ndi.tv/
• Live exchange of multimedia streams within the same LAN
• Multichannel and uncompressed media streams (high quality)
• mDNS used for service discovery
• Easy to use (and integrate) native SDK
• Available on Windows, Linux, MacOS, Android, etc.
• https://www.ndi.tv/sdk/
• VLC team working on an alternative implementation
• https://code.videolan.org/jbk/libndi
• Plenty of applications for different use cases
What is NDI?
• Network Device Interface (NDI)
• Royalty-free software standard developed by NewTek
• https://www.ndi.tv/
• Live exchange of multimedia streams within the same LAN
• Multichannel and uncompressed media streams (high quality)
• mDNS used for service discovery
• Easy to use (and integrate) native SDK
• Available on Windows, Linux, MacOS, Android, etc.
• https://www.ndi.tv/sdk/
• VLC team working on an alternative implementation
• https://code.videolan.org/jbk/libndi
• Plenty of applications for different use cases
What is NDI?
• Network Device Interface (NDI)
• Royalty-free software standard developed by NewTek
• https://www.ndi.tv/
• Live exchange of multimedia streams within the same LAN
• Multichannel and uncompressed media streams (high quality)
• mDNS used for service discovery
• Easy to use (and integrate) native SDK
• Available on Windows, Linux, MacOS, Android, etc.
• https://www.ndi.tv/sdk/
• VLC team working on an alternative implementation
• https://code.videolan.org/jbk/libndi
• Plenty of applications for different use cases
What is NDI?
• Network Device Interface (NDI)
• Royalty-free software standard developed by NewTek
• https://www.ndi.tv/
• Live exchange of multimedia streams within the same LAN
• Multichannel and uncompressed media streams (high quality)
• mDNS used for service discovery
• Easy to use (and integrate) native SDK
• Available on Windows, Linux, MacOS, Android, etc.
• https://www.ndi.tv/sdk/
• VLC team working on an alternative implementation
• https://code.videolan.org/jbk/libndi
• Plenty of applications for different use cases
No easy way to do WebRTC, though..?
No easy way to do WebRTC, though..?
No easy way to do WebRTC, though..?
Ouch, that hurts...
Ouch, that hurts...
That hurts even MORE!
That hurts even MORE!
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
A real use case: CommCon Virtual 2020
• Due to the pandemic, CommCon was done virtually in 2020
• https://2020.commcon.xyz/
• Dan Jenkins, the organizer, wanted pre-recorded talks for more quality
• Speakers would present via WebRTC
• Media production team would record and process
• Per Dan’s words, a bit of a painful process, though
• Mix of different applications for different things
• Jitsi and vMix both used at the same time
• NDI, required by media team, hard to capture
• Manual capture of the Jitsi window for live content
• vMix only supports mixed streams, apparently?
• “Life would have been WAY easier with direct WebRTC-to-NDI...”
GStreamer NDI plugin can only receive
https://github.com/teltek/gst-plugin-ndi
Challenge accepted!
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
First experiments (RTP-to-NDI)
How to make that WebRTC compliant?
• First very simple step may be RTP forwarders1
• This prototype supports RTP ingestion already
• VideoRoom + RTP forwarders could easily fill the gap
• Why not something more integrated, though?
• RTP forwarders do require a bit of orchestration (e.g., ports exchange)
• Custom plugin to receive WebRTC streams, maybe?
• Audio/video decoding + NDI translation in plugin itself (lightweight enough)
• Quite a straightforward process
• Janus has its own RTP stack, no need for the one in rtp2ndi
• Everything else can work pretty much the same way
1
Don’t miss my workshop, in a couple of hours
How to make that WebRTC compliant?
• First very simple step may be RTP forwarders1
• This prototype supports RTP ingestion already
• VideoRoom + RTP forwarders could easily fill the gap
• Why not something more integrated, though?
• RTP forwarders do require a bit of orchestration (e.g., ports exchange)
• Custom plugin to receive WebRTC streams, maybe?
• Audio/video decoding + NDI translation in plugin itself (lightweight enough)
• Quite a straightforward process
• Janus has its own RTP stack, no need for the one in rtp2ndi
• Everything else can work pretty much the same way
1
Don’t miss my workshop, in a couple of hours
How to make that WebRTC compliant?
• First very simple step may be RTP forwarders1
• This prototype supports RTP ingestion already
• VideoRoom + RTP forwarders could easily fill the gap
• Why not something more integrated, though?
• RTP forwarders do require a bit of orchestration (e.g., ports exchange)
• Custom plugin to receive WebRTC streams, maybe?
• Audio/video decoding + NDI translation in plugin itself (lightweight enough)
• Quite a straightforward process
• Janus has its own RTP stack, no need for the one in rtp2ndi
• Everything else can work pretty much the same way
1
Don’t miss my workshop, in a couple of hours
Bringing Janus in the picture
Bringing Janus in the picture
Bringing Janus in the picture
Bringing Janus in the picture
Bringing Janus in the picture
Users will not be in your own LAN, though...
• As it is, the plugin works great for local users
• Browsers can connect to the Janus + NDI plugin directly
• The WebRTC-to-NDI feature works seamlessly
• What if you need to bring in someone remote, though?
• Janus + NDI plugin needs to be in the LAN (or NDI won’t work)
• Hard to make Janus server reachable, if it’s behind NAT/firewall
• (and you’ll definitely want the server to be publicly reachable anyway)
• A couple of options, here
1 Transform the code (again) to a “client” that can talk to the public instance
2 Leave Janus as it is, and “use” it as a programmable client instead!
Users will not be in your own LAN, though...
• As it is, the plugin works great for local users
• Browsers can connect to the Janus + NDI plugin directly
• The WebRTC-to-NDI feature works seamlessly
• What if you need to bring in someone remote, though?
• Janus + NDI plugin needs to be in the LAN (or NDI won’t work)
• Hard to make Janus server reachable, if it’s behind NAT/firewall
• (and you’ll definitely want the server to be publicly reachable anyway)
• A couple of options, here
1 Transform the code (again) to a “client” that can talk to the public instance
2 Leave Janus as it is, and “use” it as a programmable client instead!
Users will not be in your own LAN, though...
• As it is, the plugin works great for local users
• Browsers can connect to the Janus + NDI plugin directly
• The WebRTC-to-NDI feature works seamlessly
• What if you need to bring in someone remote, though?
• Janus + NDI plugin needs to be in the LAN (or NDI won’t work)
• Hard to make Janus server reachable, if it’s behind NAT/firewall
• (and you’ll definitely want the server to be publicly reachable anyway)
• A couple of options, here
1 Transform the code (again) to a “client” that can talk to the public instance
2 Leave Janus as it is, and “use” it as a programmable client instead!
Users will not be in your own LAN, though...
• As it is, the plugin works great for local users
• Browsers can connect to the Janus + NDI plugin directly
• The WebRTC-to-NDI feature works seamlessly
• What if you need to bring in someone remote, though?
• Janus + NDI plugin needs to be in the LAN (or NDI won’t work)
• Hard to make Janus server reachable, if it’s behind NAT/firewall
• (and you’ll definitely want the server to be publicly reachable anyway)
• A couple of options, here
1 Transform the code (again) to a “client” that can talk to the public instance
2 Leave Janus as it is, and “use” it as a programmable client instead!
Users will not be in your own LAN, though...
• As it is, the plugin works great for local users
• Browsers can connect to the Janus + NDI plugin directly
• The WebRTC-to-NDI feature works seamlessly
• What if you need to bring in someone remote, though?
• Janus + NDI plugin needs to be in the LAN (or NDI won’t work)
• Hard to make Janus server reachable, if it’s behind NAT/firewall
• (and you’ll definitely want the server to be publicly reachable anyway)
• A couple of options, here
1 Transform the code (again) to a “client” that can talk to the public instance
2 Leave Janus as it is, and “use” it as a programmable client instead!
Bringing Janus (and the Internet) in the picture
Bringing Janus (and the Internet) in the picture
Bringing Janus (and the Internet) in the picture
Bringing Janus (and the Internet) in the picture
Now that it works, why not turn it into a “service”?
Now that it works, why not turn it into a “service”?
• Collaboration between Dan Jenkins (Nimble Ape) and Meetecho
• https://broadcaster.vc/
• Approach pretty much the one we’ve seen in the previous slides
• Public Janus instances for conversations (SaaS, hosted by Nimble Ape)
• Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN
• Orchestration between the two done “automagically”
• Local Janus instance automatically subscribes (WebRTC) to active participants
• NDI feeds automatically generated for who joins your room
Give it a try!
We had to improve a few things first (see next slides), but in Beta now
Now that it works, why not turn it into a “service”?
• Collaboration between Dan Jenkins (Nimble Ape) and Meetecho
• https://broadcaster.vc/
• Approach pretty much the one we’ve seen in the previous slides
• Public Janus instances for conversations (SaaS, hosted by Nimble Ape)
• Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN
• Orchestration between the two done “automagically”
• Local Janus instance automatically subscribes (WebRTC) to active participants
• NDI feeds automatically generated for who joins your room
Give it a try!
We had to improve a few things first (see next slides), but in Beta now
Now that it works, why not turn it into a “service”?
• Collaboration between Dan Jenkins (Nimble Ape) and Meetecho
• https://broadcaster.vc/
• Approach pretty much the one we’ve seen in the previous slides
• Public Janus instances for conversations (SaaS, hosted by Nimble Ape)
• Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN
• Orchestration between the two done “automagically”
• Local Janus instance automatically subscribes (WebRTC) to active participants
• NDI feeds automatically generated for who joins your room
Give it a try!
We had to improve a few things first (see next slides), but in Beta now
Now that it works, why not turn it into a “service”?
• Collaboration between Dan Jenkins (Nimble Ape) and Meetecho
• https://broadcaster.vc/
• Approach pretty much the one we’ve seen in the previous slides
• Public Janus instances for conversations (SaaS, hosted by Nimble Ape)
• Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN
• Orchestration between the two done “automagically”
• Local Janus instance automatically subscribes (WebRTC) to active participants
• NDI feeds automatically generated for who joins your room
Give it a try!
We had to improve a few things first (see next slides), but in Beta now
Two channels are better than one!
Fixing artifacts with a jitter buffer
Fixing wrong image management
Test patterns (“Is this working?”)
Test patterns (“Is this working?”)
Water(marks), water(marks), everywhere
Now we have AV1 in there too!
https://www.meetecho.com/blog/av1-h265-janus/
Action!
https://www.youtube.com/watch?v=6MtH9XV4DfQ
Action!
https://www.youtube.com/watch?v=6MtH9XV4DfQ
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• http://www.meetecho.com

More Related Content

What's hot

Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Lorenzo Miniero
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Lorenzo Miniero
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Lorenzo Miniero
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmLorenzo Miniero
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Lorenzo Miniero
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Lorenzo Miniero
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with JanusLorenzo Miniero
 
SIP/WebRTC load testing @ KamailioWorld 2017
SIP/WebRTC load testing @ KamailioWorld 2017SIP/WebRTC load testing @ KamailioWorld 2017
SIP/WebRTC load testing @ KamailioWorld 2017Lorenzo Miniero
 
Turning live events to virtual with Janus
Turning live events to virtual with JanusTurning live events to virtual with Janus
Turning live events to virtual with JanusLorenzo Miniero
 
FOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationFOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationLorenzo Miniero
 
Janus: an open source and general purpose WebRTC (gateway) server
Janus: an open source and general purpose WebRTC (gateway) serverJanus: an open source and general purpose WebRTC (gateway) server
Janus: an open source and general purpose WebRTC (gateway) serverDevDay
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Lorenzo Miniero
 
WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017Lorenzo Miniero
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Paolo Saviano
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingLorenzo Miniero
 

What's hot (20)

Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with Janus
 
SIP/WebRTC load testing @ KamailioWorld 2017
SIP/WebRTC load testing @ KamailioWorld 2017SIP/WebRTC load testing @ KamailioWorld 2017
SIP/WebRTC load testing @ KamailioWorld 2017
 
Turning live events to virtual with Janus
Turning live events to virtual with JanusTurning live events to virtual with Janus
Turning live events to virtual with Janus
 
FOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationFOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentation
 
Janus: an open source and general purpose WebRTC (gateway) server
Janus: an open source and general purpose WebRTC (gateway) serverJanus: an open source and general purpose WebRTC (gateway) server
Janus: an open source and general purpose WebRTC (gateway) server
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18
 
WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
Janus @ RTC2017 Beijing
Janus @ RTC2017 BeijingJanus @ RTC2017 Beijing
Janus @ RTC2017 Beijing
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 

Similar to Janus + NDI @ ClueCon 2021

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
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Lorenzo Miniero
 
The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023Lorenzo Miniero
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Lorenzo Miniero
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTCArjun Varma
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023Lorenzo Miniero
 
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
 
Twilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Inc
 
WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016Dan Jenkins
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsLuis Lopez
 
Project Baird — Overview for DVB Meeting 2010-11-23
Project Baird — Overview for DVB Meeting 2010-11-23Project Baird — Overview for DVB Meeting 2010-11-23
Project Baird — Overview for DVB Meeting 2010-11-23Mo McRoberts
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...Amir Zmora
 
Keeping It Realtime!
Keeping It Realtime!Keeping It Realtime!
Keeping It Realtime!Mojo Lingo
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceTsahi Levent-levi
 
WebRTC 2014 Conference Closing Panel Survey Results
WebRTC 2014 Conference Closing Panel Survey ResultsWebRTC 2014 Conference Closing Panel Survey Results
WebRTC 2014 Conference Closing Panel Survey ResultsAmir Zmora
 
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday intro
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday introMarco bizzantino Microsoft-Docker Meetup #4 Docker bday intro
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday introKiratech
 
Harnessing the potential of WebRTC
Harnessing the potential of WebRTCHarnessing the potential of WebRTC
Harnessing the potential of WebRTCTsahi Levent-levi
 
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
 
Video production in the cloud for live streaming
Video production in the cloud for live streamingVideo production in the cloud for live streaming
Video production in the cloud for live streamingPaul Richards
 

Similar to Janus + NDI @ ClueCon 2021 (20)

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...
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 
The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTC
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
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...
 
Janus @ DevDay Napoli
Janus @ DevDay NapoliJanus @ DevDay Napoli
Janus @ DevDay Napoli
 
Twilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC Reborn
 
WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streams
 
Project Baird — Overview for DVB Meeting 2010-11-23
Project Baird — Overview for DVB Meeting 2010-11-23Project Baird — Overview for DVB Meeting 2010-11-23
Project Baird — Overview for DVB Meeting 2010-11-23
 
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
WebRTC Live Q&A Session #4 - WebRTC in WebKit and the story around Apple and ...
 
Keeping It Realtime!
Keeping It Realtime!Keeping It Realtime!
Keeping It Realtime!
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
 
WebRTC 2014 Conference Closing Panel Survey Results
WebRTC 2014 Conference Closing Panel Survey ResultsWebRTC 2014 Conference Closing Panel Survey Results
WebRTC 2014 Conference Closing Panel Survey Results
 
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday intro
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday introMarco bizzantino Microsoft-Docker Meetup #4 Docker bday intro
Marco bizzantino Microsoft-Docker Meetup #4 Docker bday intro
 
Harnessing the potential of WebRTC
Harnessing the potential of WebRTCHarnessing the potential of WebRTC
Harnessing the potential of WebRTC
 
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...
 
Video production in the cloud for live streaming
Video production in the cloud for live streamingVideo production in the cloud for live streaming
Video production in the cloud for live streaming
 

More from Lorenzo Miniero

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerLorenzo Miniero
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Lorenzo Miniero
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!Lorenzo Miniero
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Lorenzo Miniero
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022Lorenzo Miniero
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceLorenzo Miniero
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Lorenzo Miniero
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Lorenzo Miniero
 
Welcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusWelcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusLorenzo Miniero
 

More from Lorenzo Miniero (12)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC Server
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019
 
Welcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusWelcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of Janus
 

Recently uploaded

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
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
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
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
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
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
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
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
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Janus + NDI @ ClueCon 2021

  • 1. Bringing WebRTC to producers using NDI Lorenzo Miniero ClueCon TGI2021 February 17th 2021
  • 2. Who am I? Lorenzo Miniero • Ph.D @ UniNA • Chairman @ Meetecho • Main author of Janus® Contacts and info • lorenzo@meetecho.com • https://twitter.com/elminiero • https://www.slideshare.net/LorenzoMiniero • https://soundcloud.com/lminiero
  • 3. Just a few words on Meetecho • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Completely independent from the University • Focus on real-time multimedia applications • Strong perspective on standardization and open source • Several activities • Consulting services • Commercial support and Janus licenses • Streaming of live events (IETF, ACM, etc.) • Proudly brewed in sunny Napoli, Italy
  • 5. You may have heard of NDI already https://youtu.be/qazlTnSjVzA?t=3703 (ClueCon 2020 Dangerous Demos)
  • 7. What is NDI? • Network Device Interface (NDI) • Royalty-free software standard developed by NewTek • https://www.ndi.tv/ • Live exchange of multimedia streams within the same LAN • Multichannel and uncompressed media streams (high quality) • mDNS used for service discovery • Easy to use (and integrate) native SDK • Available on Windows, Linux, MacOS, Android, etc. • https://www.ndi.tv/sdk/ • VLC team working on an alternative implementation • https://code.videolan.org/jbk/libndi • Plenty of applications for different use cases
  • 8. What is NDI? • Network Device Interface (NDI) • Royalty-free software standard developed by NewTek • https://www.ndi.tv/ • Live exchange of multimedia streams within the same LAN • Multichannel and uncompressed media streams (high quality) • mDNS used for service discovery • Easy to use (and integrate) native SDK • Available on Windows, Linux, MacOS, Android, etc. • https://www.ndi.tv/sdk/ • VLC team working on an alternative implementation • https://code.videolan.org/jbk/libndi • Plenty of applications for different use cases
  • 9. What is NDI? • Network Device Interface (NDI) • Royalty-free software standard developed by NewTek • https://www.ndi.tv/ • Live exchange of multimedia streams within the same LAN • Multichannel and uncompressed media streams (high quality) • mDNS used for service discovery • Easy to use (and integrate) native SDK • Available on Windows, Linux, MacOS, Android, etc. • https://www.ndi.tv/sdk/ • VLC team working on an alternative implementation • https://code.videolan.org/jbk/libndi • Plenty of applications for different use cases
  • 10. What is NDI? • Network Device Interface (NDI) • Royalty-free software standard developed by NewTek • https://www.ndi.tv/ • Live exchange of multimedia streams within the same LAN • Multichannel and uncompressed media streams (high quality) • mDNS used for service discovery • Easy to use (and integrate) native SDK • Available on Windows, Linux, MacOS, Android, etc. • https://www.ndi.tv/sdk/ • VLC team working on an alternative implementation • https://code.videolan.org/jbk/libndi • Plenty of applications for different use cases
  • 11. No easy way to do WebRTC, though..?
  • 12. No easy way to do WebRTC, though..?
  • 13. No easy way to do WebRTC, though..?
  • 18. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 19. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 20. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 21. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 22. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 23. A real use case: CommCon Virtual 2020 • Due to the pandemic, CommCon was done virtually in 2020 • https://2020.commcon.xyz/ • Dan Jenkins, the organizer, wanted pre-recorded talks for more quality • Speakers would present via WebRTC • Media production team would record and process • Per Dan’s words, a bit of a painful process, though • Mix of different applications for different things • Jitsi and vMix both used at the same time • NDI, required by media team, hard to capture • Manual capture of the Jitsi window for live content • vMix only supports mixed streams, apparently? • “Life would have been WAY easier with direct WebRTC-to-NDI...”
  • 24. GStreamer NDI plugin can only receive https://github.com/teltek/gst-plugin-ndi
  • 33. How to make that WebRTC compliant? • First very simple step may be RTP forwarders1 • This prototype supports RTP ingestion already • VideoRoom + RTP forwarders could easily fill the gap • Why not something more integrated, though? • RTP forwarders do require a bit of orchestration (e.g., ports exchange) • Custom plugin to receive WebRTC streams, maybe? • Audio/video decoding + NDI translation in plugin itself (lightweight enough) • Quite a straightforward process • Janus has its own RTP stack, no need for the one in rtp2ndi • Everything else can work pretty much the same way 1 Don’t miss my workshop, in a couple of hours
  • 34. How to make that WebRTC compliant? • First very simple step may be RTP forwarders1 • This prototype supports RTP ingestion already • VideoRoom + RTP forwarders could easily fill the gap • Why not something more integrated, though? • RTP forwarders do require a bit of orchestration (e.g., ports exchange) • Custom plugin to receive WebRTC streams, maybe? • Audio/video decoding + NDI translation in plugin itself (lightweight enough) • Quite a straightforward process • Janus has its own RTP stack, no need for the one in rtp2ndi • Everything else can work pretty much the same way 1 Don’t miss my workshop, in a couple of hours
  • 35. How to make that WebRTC compliant? • First very simple step may be RTP forwarders1 • This prototype supports RTP ingestion already • VideoRoom + RTP forwarders could easily fill the gap • Why not something more integrated, though? • RTP forwarders do require a bit of orchestration (e.g., ports exchange) • Custom plugin to receive WebRTC streams, maybe? • Audio/video decoding + NDI translation in plugin itself (lightweight enough) • Quite a straightforward process • Janus has its own RTP stack, no need for the one in rtp2ndi • Everything else can work pretty much the same way 1 Don’t miss my workshop, in a couple of hours
  • 36. Bringing Janus in the picture
  • 37. Bringing Janus in the picture
  • 38. Bringing Janus in the picture
  • 39. Bringing Janus in the picture
  • 40. Bringing Janus in the picture
  • 41. Users will not be in your own LAN, though... • As it is, the plugin works great for local users • Browsers can connect to the Janus + NDI plugin directly • The WebRTC-to-NDI feature works seamlessly • What if you need to bring in someone remote, though? • Janus + NDI plugin needs to be in the LAN (or NDI won’t work) • Hard to make Janus server reachable, if it’s behind NAT/firewall • (and you’ll definitely want the server to be publicly reachable anyway) • A couple of options, here 1 Transform the code (again) to a “client” that can talk to the public instance 2 Leave Janus as it is, and “use” it as a programmable client instead!
  • 42. Users will not be in your own LAN, though... • As it is, the plugin works great for local users • Browsers can connect to the Janus + NDI plugin directly • The WebRTC-to-NDI feature works seamlessly • What if you need to bring in someone remote, though? • Janus + NDI plugin needs to be in the LAN (or NDI won’t work) • Hard to make Janus server reachable, if it’s behind NAT/firewall • (and you’ll definitely want the server to be publicly reachable anyway) • A couple of options, here 1 Transform the code (again) to a “client” that can talk to the public instance 2 Leave Janus as it is, and “use” it as a programmable client instead!
  • 43. Users will not be in your own LAN, though... • As it is, the plugin works great for local users • Browsers can connect to the Janus + NDI plugin directly • The WebRTC-to-NDI feature works seamlessly • What if you need to bring in someone remote, though? • Janus + NDI plugin needs to be in the LAN (or NDI won’t work) • Hard to make Janus server reachable, if it’s behind NAT/firewall • (and you’ll definitely want the server to be publicly reachable anyway) • A couple of options, here 1 Transform the code (again) to a “client” that can talk to the public instance 2 Leave Janus as it is, and “use” it as a programmable client instead!
  • 44. Users will not be in your own LAN, though... • As it is, the plugin works great for local users • Browsers can connect to the Janus + NDI plugin directly • The WebRTC-to-NDI feature works seamlessly • What if you need to bring in someone remote, though? • Janus + NDI plugin needs to be in the LAN (or NDI won’t work) • Hard to make Janus server reachable, if it’s behind NAT/firewall • (and you’ll definitely want the server to be publicly reachable anyway) • A couple of options, here 1 Transform the code (again) to a “client” that can talk to the public instance 2 Leave Janus as it is, and “use” it as a programmable client instead!
  • 45. Users will not be in your own LAN, though... • As it is, the plugin works great for local users • Browsers can connect to the Janus + NDI plugin directly • The WebRTC-to-NDI feature works seamlessly • What if you need to bring in someone remote, though? • Janus + NDI plugin needs to be in the LAN (or NDI won’t work) • Hard to make Janus server reachable, if it’s behind NAT/firewall • (and you’ll definitely want the server to be publicly reachable anyway) • A couple of options, here 1 Transform the code (again) to a “client” that can talk to the public instance 2 Leave Janus as it is, and “use” it as a programmable client instead!
  • 46. Bringing Janus (and the Internet) in the picture
  • 47. Bringing Janus (and the Internet) in the picture
  • 48. Bringing Janus (and the Internet) in the picture
  • 49. Bringing Janus (and the Internet) in the picture
  • 50. Now that it works, why not turn it into a “service”?
  • 51. Now that it works, why not turn it into a “service”? • Collaboration between Dan Jenkins (Nimble Ape) and Meetecho • https://broadcaster.vc/ • Approach pretty much the one we’ve seen in the previous slides • Public Janus instances for conversations (SaaS, hosted by Nimble Ape) • Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN • Orchestration between the two done “automagically” • Local Janus instance automatically subscribes (WebRTC) to active participants • NDI feeds automatically generated for who joins your room Give it a try! We had to improve a few things first (see next slides), but in Beta now
  • 52. Now that it works, why not turn it into a “service”? • Collaboration between Dan Jenkins (Nimble Ape) and Meetecho • https://broadcaster.vc/ • Approach pretty much the one we’ve seen in the previous slides • Public Janus instances for conversations (SaaS, hosted by Nimble Ape) • Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN • Orchestration between the two done “automagically” • Local Janus instance automatically subscribes (WebRTC) to active participants • NDI feeds automatically generated for who joins your room Give it a try! We had to improve a few things first (see next slides), but in Beta now
  • 53. Now that it works, why not turn it into a “service”? • Collaboration between Dan Jenkins (Nimble Ape) and Meetecho • https://broadcaster.vc/ • Approach pretty much the one we’ve seen in the previous slides • Public Janus instances for conversations (SaaS, hosted by Nimble Ape) • Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN • Orchestration between the two done “automagically” • Local Janus instance automatically subscribes (WebRTC) to active participants • NDI feeds automatically generated for who joins your room Give it a try! We had to improve a few things first (see next slides), but in Beta now
  • 54. Now that it works, why not turn it into a “service”? • Collaboration between Dan Jenkins (Nimble Ape) and Meetecho • https://broadcaster.vc/ • Approach pretty much the one we’ve seen in the previous slides • Public Janus instances for conversations (SaaS, hosted by Nimble Ape) • Docker images with { Janus + Meetecho NDI plugin } to launch in your LAN • Orchestration between the two done “automagically” • Local Janus instance automatically subscribes (WebRTC) to active participants • NDI feeds automatically generated for who joins your room Give it a try! We had to improve a few things first (see next slides), but in Beta now
  • 55. Two channels are better than one!
  • 56. Fixing artifacts with a jitter buffer
  • 57. Fixing wrong image management
  • 58. Test patterns (“Is this working?”)
  • 59. Test patterns (“Is this working?”)
  • 61. Now we have AV1 in there too! https://www.meetecho.com/blog/av1-h265-janus/
  • 64. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • http://www.meetecho.com