SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Can SFUs and MCUs be friends?
Lorenzo Miniero
@elminiero
IIT Real-Time Communication 2020 – WebRTC Track
October 14th 2020, Chicago, IL, USA
A few words about me
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
Fun fact: the first RTC server I ever wrote was an MCU
Fun fact: the first RTC server I ever wrote was an MCU
Fun fact: the first RTC server I ever wrote was an MCU
Fun fact: the first RTC server I ever wrote was an MCU
WebRTC topologies: full-mesh
https://webrtchacks.com/webrtc-beyond-one-one/
WebRTC topologies: MCU (Multipoint Control Unit)
https://webrtchacks.com/webrtc-beyond-one-one/
WebRTC topologies: SFU (Selective Forwarding Unit)
https://webrtchacks.com/webrtc-beyond-one-one/
How most “SFU vs. MCU” discussions look like
A few words on MCUs
• Been around for a long time (e.g., legacy SIP/H.323 conferencing systems)
• To simplify, mixes multiple streams into one
• Multiple participants send their streams to the MCU
• MCU decodes each stream and mixes/composes them
• Participants get a single encoded stream back
Some Pros
• Limited/consistent bandwidth usage
• Good for constrained endpoints
• Can compose/show many streams
• Endpoints can use different codecs
• Easier “legacy” interoperability
Some Cons
• CPU heavy on server (expensive)
• Needs smarter RTP buffering
• Can’t really use Simulcast/SVC
• Little flexibility on UI
• Can’t do end-to-end encryption
A few words on MCUs
• Been around for a long time (e.g., legacy SIP/H.323 conferencing systems)
• To simplify, mixes multiple streams into one
• Multiple participants send their streams to the MCU
• MCU decodes each stream and mixes/composes them
• Participants get a single encoded stream back
Some Pros
• Limited/consistent bandwidth usage
• Good for constrained endpoints
• Can compose/show many streams
• Endpoints can use different codecs
• Easier “legacy” interoperability
Some Cons
• CPU heavy on server (expensive)
• Needs smarter RTP buffering
• Can’t really use Simulcast/SVC
• Little flexibility on UI
• Can’t do end-to-end encryption
A few words on MCUs
• Been around for a long time (e.g., legacy SIP/H.323 conferencing systems)
• To simplify, mixes multiple streams into one
• Multiple participants send their streams to the MCU
• MCU decodes each stream and mixes/composes them
• Participants get a single encoded stream back
Some Pros
• Limited/consistent bandwidth usage
• Good for constrained endpoints
• Can compose/show many streams
• Endpoints can use different codecs
• Easier “legacy” interoperability
Some Cons
• CPU heavy on server (expensive)
• Needs smarter RTP buffering
• Can’t really use Simulcast/SVC
• Little flexibility on UI
• Can’t do end-to-end encryption
A few words on MCUs
• Been around for a long time (e.g., legacy SIP/H.323 conferencing systems)
• To simplify, mixes multiple streams into one
• Multiple participants send their streams to the MCU
• MCU decodes each stream and mixes/composes them
• Participants get a single encoded stream back
Some Pros
• Limited/consistent bandwidth usage
• Good for constrained endpoints
• Can compose/show many streams
• Endpoints can use different codecs
• Easier “legacy” interoperability
Some Cons
• CPU heavy on server (expensive)
• Needs smarter RTP buffering
• Can’t really use Simulcast/SVC
• Little flexibility on UI
• Can’t do end-to-end encryption
A few words on SFUs
• Relatively recent, and more widespread thanks to WebRTC
• No mixing performed, packets are just relayed
• Multiple participants send their streams to the SFU
• Streams forwarded separately (and optionally) to other subscribers
• No transcoding is performed on the media path
Some Pros
• Much more lightweight on CPU
• Feedback between users preserved
• Can take advantage of Simulcast/SVC
• Allows for end-to-end encryption
• Very flexible on UI side
Some Cons
• Higher bandwidth usage (expensive)
• Clients have to decode/render a lot
• They also need to support same codecs
• Harder to integrate with legacy systems
A few words on SFUs
• Relatively recent, and more widespread thanks to WebRTC
• No mixing performed, packets are just relayed
• Multiple participants send their streams to the SFU
• Streams forwarded separately (and optionally) to other subscribers
• No transcoding is performed on the media path
Some Pros
• Much more lightweight on CPU
• Feedback between users preserved
• Can take advantage of Simulcast/SVC
• Allows for end-to-end encryption
• Very flexible on UI side
Some Cons
• Higher bandwidth usage (expensive)
• Clients have to decode/render a lot
• They also need to support same codecs
• Harder to integrate with legacy systems
A few words on SFUs
• Relatively recent, and more widespread thanks to WebRTC
• No mixing performed, packets are just relayed
• Multiple participants send their streams to the SFU
• Streams forwarded separately (and optionally) to other subscribers
• No transcoding is performed on the media path
Some Pros
• Much more lightweight on CPU
• Feedback between users preserved
• Can take advantage of Simulcast/SVC
• Allows for end-to-end encryption
• Very flexible on UI side
Some Cons
• Higher bandwidth usage (expensive)
• Clients have to decode/render a lot
• They also need to support same codecs
• Harder to integrate with legacy systems
A few words on SFUs
• Relatively recent, and more widespread thanks to WebRTC
• No mixing performed, packets are just relayed
• Multiple participants send their streams to the SFU
• Streams forwarded separately (and optionally) to other subscribers
• No transcoding is performed on the media path
Some Pros
• Much more lightweight on CPU
• Feedback between users preserved
• Can take advantage of Simulcast/SVC
• Allows for end-to-end encryption
• Very flexible on UI side
Some Cons
• Higher bandwidth usage (expensive)
• Clients have to decode/render a lot
• They also need to support same codecs
• Harder to integrate with legacy systems
So they’re indeed very different...
But... can’t SFUs and MCUs be friends?
Audio MCU + Video SFU
• What we usually call the “hybrid approach”
• Audio from participants is mixed (MCU)
• Video from participants is relayed (SFU)
• Mixing only audio has a few advantages
1 Audiomixing lighter than Videomixing, so relative impact
2 Participants with constraints (CPU/BW) can stick to audio only
3 In case audio is SIP-based, easy to hook to PSTN
4 Decoupling audio from video allows for more options (e.g., interpreters)
5 Easy to distribute/broadcast (audio already mixed)
• SFU mode keeps flexibility for video
• Easy to subscribe to a subset of participants, or none at all
Audio MCU + Video SFU
• What we usually call the “hybrid approach”
• Audio from participants is mixed (MCU)
• Video from participants is relayed (SFU)
• Mixing only audio has a few advantages
1 Audiomixing lighter than Videomixing, so relative impact
2 Participants with constraints (CPU/BW) can stick to audio only
3 In case audio is SIP-based, easy to hook to PSTN
4 Decoupling audio from video allows for more options (e.g., interpreters)
5 Easy to distribute/broadcast (audio already mixed)
• SFU mode keeps flexibility for video
• Easy to subscribe to a subset of participants, or none at all
Audio MCU + Video SFU
• What we usually call the “hybrid approach”
• Audio from participants is mixed (MCU)
• Video from participants is relayed (SFU)
• Mixing only audio has a few advantages
1 Audiomixing lighter than Videomixing, so relative impact
2 Participants with constraints (CPU/BW) can stick to audio only
3 In case audio is SIP-based, easy to hook to PSTN
4 Decoupling audio from video allows for more options (e.g., interpreters)
5 Easy to distribute/broadcast (audio already mixed)
• SFU mode keeps flexibility for video
• Easy to subscribe to a subset of participants, or none at all
Audio MCU + Video SFU
https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
Live Recording
Live Recording
Broadcasting to a CDN
A practical example: Meetecho @ IETF 108
A practical example: Meetecho @ IETF 108
https://www.youtube.com/watch?v=DV0q9s94RL8
A practical example: Meetecho @ IETF 108
https://www.youtube.com/watch?v=DV0q9s94RL8
A practical example: Meetecho @ IETF 108
https://www.youtube.com/watch?v=DV0q9s94RL8
A practical example: Meetecho @ IETF 108
https://www.youtube.com/watch?v=DV0q9s94RL8
Integrating with (legacy) conferencing systems
Integrating with (legacy) conferencing systems
Integrating with (legacy) conferencing systems
A few practical examples
A few practical examples
http://www.januscon.it/2019/talk.php?t=nexmo (Giacomo Vacca)
A few practical examples
http://www.januscon.it/2019/talk.php?t=mojolingo (Luca Pradovera)
Supporting less powerful devices
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
What about using browsers as an MCU?
• Browsers often already used that way for recording/broadcasting
• e.g., headless browser joining as participant
• External tool (e.g., ffmpeg) captures audio/video from browser
• Canvas (and WebRTC) allow for a more integrated functionality, though
• e.g., composition done on a canvas object (basically an MCU!)
• canvas.captureStream() to turn it into a WebRTC stream
• ...and, why not, WebAudio to do audio too!
• Used by companies like Streamyard and Stage TEN for broadcasting
An ugly canvas+WebRTC demo
• https://janus.conf.meetecho.com/canvas
Masashi Ganeko’s MCU in a Browser
https://speakerdeck.com/mganeko/build-webrtc-mcu-on-browser
Masashi Ganeko’s MCU in a Browser
https://speakerdeck.com/mganeko/build-webrtc-mcu-on-browser
Tim Panton’s Book Club!
https://rendezvous.zone
Tim Panton’s Book Club!
https://rendezvous.zone
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• https://www.meetecho.com

Mais conteúdo relacionado

Mais procurados

Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseApplication Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseVictoriaMetrics
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
Netflix Play API: Why we built an evolutionary architecture
Netflix Play API: Why we built an evolutionary architectureNetflix Play API: Why we built an evolutionary architecture
Netflix Play API: Why we built an evolutionary architectureSuudhan Rangarajan
 
Autoscaling Kubernetes
Autoscaling KubernetesAutoscaling Kubernetes
Autoscaling Kubernetescraigbox
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability LibraryTonny Adhi Sabastian
 
cLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHousecLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHouseAltinity Ltd
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21Lorenzo Miniero
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservicesThomas Graf
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Lorenzo Miniero
 
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityCilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityThomas Graf
 
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
ContainerDays Hamburg 2023 — Cilium Workshop.pdfContainerDays Hamburg 2023 — Cilium Workshop.pdf
ContainerDays Hamburg 2023 — Cilium Workshop.pdfRaphaël PINSON
 
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
 
VM Job Queues in CloudStack
VM Job Queues in CloudStackVM Job Queues in CloudStack
VM Job Queues in CloudStackShapeBlue
 
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdfOSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdfNETWAYS
 
Opentelemetry - From frontend to backend
Opentelemetry - From frontend to backendOpentelemetry - From frontend to backend
Opentelemetry - From frontend to backendSebastian Poxhofer
 
Adopting OpenTelemetry
Adopting OpenTelemetryAdopting OpenTelemetry
Adopting OpenTelemetryVincent Behar
 

Mais procurados (20)

Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseApplication Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Netflix Play API: Why we built an evolutionary architecture
Netflix Play API: Why we built an evolutionary architectureNetflix Play API: Why we built an evolutionary architecture
Netflix Play API: Why we built an evolutionary architecture
 
Autoscaling Kubernetes
Autoscaling KubernetesAutoscaling Kubernetes
Autoscaling Kubernetes
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability Library
 
cLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHousecLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHouse
 
Janus & docker: friends or foe
Janus & docker: friends or foe Janus & docker: friends or foe
Janus & docker: friends or foe
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21
 
Terraform Basics
Terraform BasicsTerraform Basics
Terraform Basics
 
Kubernetes Security
Kubernetes SecurityKubernetes Security
Kubernetes Security
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservices
 
Istio a service mesh
Istio   a service meshIstio   a service mesh
Istio a service mesh
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityCilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
 
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
ContainerDays Hamburg 2023 — Cilium Workshop.pdfContainerDays Hamburg 2023 — Cilium Workshop.pdf
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
 
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
 
VM Job Queues in CloudStack
VM Job Queues in CloudStackVM Job Queues in CloudStack
VM Job Queues in CloudStack
 
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdfOSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
 
Opentelemetry - From frontend to backend
Opentelemetry - From frontend to backendOpentelemetry - From frontend to backend
Opentelemetry - From frontend to backend
 
Adopting OpenTelemetry
Adopting OpenTelemetryAdopting OpenTelemetry
Adopting OpenTelemetry
 

Semelhante a Can SFUs and MCUs be friends @ IIT-RTC 2020

Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Lorenzo Miniero
 
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...Alan Quayle
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023Lorenzo Miniero
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptx
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptxBridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptx
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptxAlberto González Trastoy
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Lorenzo Miniero
 
WebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformWebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformRyan Jespersen
 
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, Whats in it for me?
WebRTC, Whats in it for me?WebRTC, Whats in it for me?
WebRTC, Whats in it for me?SeanDuBois3
 
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
 
0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdfDejVoleti
 
Architecting Low Latency Applications Alberto Gonzalez
Architecting Low Latency Applications Alberto GonzalezArchitecting Low Latency Applications Alberto Gonzalez
Architecting Low Latency Applications Alberto GonzalezAlberto González Trastoy
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Lorenzo Miniero
 
BP503 IBM Connect 2014
BP503 IBM Connect 2014BP503 IBM Connect 2014
BP503 IBM Connect 2014Peter Lurie
 
Three years of OFELIA - taking stock
Three years of OFELIA - taking stockThree years of OFELIA - taking stock
Three years of OFELIA - taking stockFIBRE Testbed
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Lorenzo Miniero
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUppersideConferences
 
WebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettWebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettMojo Lingo
 

Semelhante a Can SFUs and MCUs be friends @ IIT-RTC 2020 (20)

Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptx
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptxBridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptx
Bridging_WebRTC_with_SIP_Alberto_WebRTCventures_Cluecon2023_NoVideo.pptx
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 
WebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformWebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and Platform
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
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
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
WebRTC, Whats in it for me?
WebRTC, Whats in it for me?WebRTC, Whats in it for me?
WebRTC, Whats in it for me?
 
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
 
0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdf
 
Architecting Low Latency Applications Alberto Gonzalez
Architecting Low Latency Applications Alberto GonzalezArchitecting Low Latency Applications Alberto Gonzalez
Architecting Low Latency Applications Alberto Gonzalez
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020
 
BP503 IBM Connect 2014
BP503 IBM Connect 2014BP503 IBM Connect 2014
BP503 IBM Connect 2014
 
Three years of OFELIA - taking stock
Three years of OFELIA - taking stockThree years of OFELIA - taking stock
Three years of OFELIA - taking stock
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
WebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettWebRTC Overview by Dan Burnett
WebRTC Overview by Dan Burnett
 

Mais de 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
 
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 and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021Lorenzo Miniero
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceLorenzo 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
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Lorenzo 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
 
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSVirtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSLorenzo Miniero
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo 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
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingLorenzo Miniero
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 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
 

Mais de Lorenzo Miniero (16)

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
 
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!
 
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 and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021
 
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSVirtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
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
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 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
 

Último

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Último (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

Can SFUs and MCUs be friends @ IIT-RTC 2020

  • 1. Can SFUs and MCUs be friends? Lorenzo Miniero @elminiero IIT Real-Time Communication 2020 – WebRTC Track October 14th 2020, Chicago, IL, USA
  • 2. A few words about me 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. Fun fact: the first RTC server I ever wrote was an MCU
  • 4. Fun fact: the first RTC server I ever wrote was an MCU
  • 5. Fun fact: the first RTC server I ever wrote was an MCU
  • 6. Fun fact: the first RTC server I ever wrote was an MCU
  • 8. WebRTC topologies: MCU (Multipoint Control Unit) https://webrtchacks.com/webrtc-beyond-one-one/
  • 9. WebRTC topologies: SFU (Selective Forwarding Unit) https://webrtchacks.com/webrtc-beyond-one-one/
  • 10. How most “SFU vs. MCU” discussions look like
  • 11. A few words on MCUs • Been around for a long time (e.g., legacy SIP/H.323 conferencing systems) • To simplify, mixes multiple streams into one • Multiple participants send their streams to the MCU • MCU decodes each stream and mixes/composes them • Participants get a single encoded stream back Some Pros • Limited/consistent bandwidth usage • Good for constrained endpoints • Can compose/show many streams • Endpoints can use different codecs • Easier “legacy” interoperability Some Cons • CPU heavy on server (expensive) • Needs smarter RTP buffering • Can’t really use Simulcast/SVC • Little flexibility on UI • Can’t do end-to-end encryption
  • 12. A few words on MCUs • Been around for a long time (e.g., legacy SIP/H.323 conferencing systems) • To simplify, mixes multiple streams into one • Multiple participants send their streams to the MCU • MCU decodes each stream and mixes/composes them • Participants get a single encoded stream back Some Pros • Limited/consistent bandwidth usage • Good for constrained endpoints • Can compose/show many streams • Endpoints can use different codecs • Easier “legacy” interoperability Some Cons • CPU heavy on server (expensive) • Needs smarter RTP buffering • Can’t really use Simulcast/SVC • Little flexibility on UI • Can’t do end-to-end encryption
  • 13. A few words on MCUs • Been around for a long time (e.g., legacy SIP/H.323 conferencing systems) • To simplify, mixes multiple streams into one • Multiple participants send their streams to the MCU • MCU decodes each stream and mixes/composes them • Participants get a single encoded stream back Some Pros • Limited/consistent bandwidth usage • Good for constrained endpoints • Can compose/show many streams • Endpoints can use different codecs • Easier “legacy” interoperability Some Cons • CPU heavy on server (expensive) • Needs smarter RTP buffering • Can’t really use Simulcast/SVC • Little flexibility on UI • Can’t do end-to-end encryption
  • 14. A few words on MCUs • Been around for a long time (e.g., legacy SIP/H.323 conferencing systems) • To simplify, mixes multiple streams into one • Multiple participants send their streams to the MCU • MCU decodes each stream and mixes/composes them • Participants get a single encoded stream back Some Pros • Limited/consistent bandwidth usage • Good for constrained endpoints • Can compose/show many streams • Endpoints can use different codecs • Easier “legacy” interoperability Some Cons • CPU heavy on server (expensive) • Needs smarter RTP buffering • Can’t really use Simulcast/SVC • Little flexibility on UI • Can’t do end-to-end encryption
  • 15. A few words on SFUs • Relatively recent, and more widespread thanks to WebRTC • No mixing performed, packets are just relayed • Multiple participants send their streams to the SFU • Streams forwarded separately (and optionally) to other subscribers • No transcoding is performed on the media path Some Pros • Much more lightweight on CPU • Feedback between users preserved • Can take advantage of Simulcast/SVC • Allows for end-to-end encryption • Very flexible on UI side Some Cons • Higher bandwidth usage (expensive) • Clients have to decode/render a lot • They also need to support same codecs • Harder to integrate with legacy systems
  • 16. A few words on SFUs • Relatively recent, and more widespread thanks to WebRTC • No mixing performed, packets are just relayed • Multiple participants send their streams to the SFU • Streams forwarded separately (and optionally) to other subscribers • No transcoding is performed on the media path Some Pros • Much more lightweight on CPU • Feedback between users preserved • Can take advantage of Simulcast/SVC • Allows for end-to-end encryption • Very flexible on UI side Some Cons • Higher bandwidth usage (expensive) • Clients have to decode/render a lot • They also need to support same codecs • Harder to integrate with legacy systems
  • 17. A few words on SFUs • Relatively recent, and more widespread thanks to WebRTC • No mixing performed, packets are just relayed • Multiple participants send their streams to the SFU • Streams forwarded separately (and optionally) to other subscribers • No transcoding is performed on the media path Some Pros • Much more lightweight on CPU • Feedback between users preserved • Can take advantage of Simulcast/SVC • Allows for end-to-end encryption • Very flexible on UI side Some Cons • Higher bandwidth usage (expensive) • Clients have to decode/render a lot • They also need to support same codecs • Harder to integrate with legacy systems
  • 18. A few words on SFUs • Relatively recent, and more widespread thanks to WebRTC • No mixing performed, packets are just relayed • Multiple participants send their streams to the SFU • Streams forwarded separately (and optionally) to other subscribers • No transcoding is performed on the media path Some Pros • Much more lightweight on CPU • Feedback between users preserved • Can take advantage of Simulcast/SVC • Allows for end-to-end encryption • Very flexible on UI side Some Cons • Higher bandwidth usage (expensive) • Clients have to decode/render a lot • They also need to support same codecs • Harder to integrate with legacy systems
  • 19. So they’re indeed very different...
  • 20. But... can’t SFUs and MCUs be friends?
  • 21. Audio MCU + Video SFU • What we usually call the “hybrid approach” • Audio from participants is mixed (MCU) • Video from participants is relayed (SFU) • Mixing only audio has a few advantages 1 Audiomixing lighter than Videomixing, so relative impact 2 Participants with constraints (CPU/BW) can stick to audio only 3 In case audio is SIP-based, easy to hook to PSTN 4 Decoupling audio from video allows for more options (e.g., interpreters) 5 Easy to distribute/broadcast (audio already mixed) • SFU mode keeps flexibility for video • Easy to subscribe to a subset of participants, or none at all
  • 22. Audio MCU + Video SFU • What we usually call the “hybrid approach” • Audio from participants is mixed (MCU) • Video from participants is relayed (SFU) • Mixing only audio has a few advantages 1 Audiomixing lighter than Videomixing, so relative impact 2 Participants with constraints (CPU/BW) can stick to audio only 3 In case audio is SIP-based, easy to hook to PSTN 4 Decoupling audio from video allows for more options (e.g., interpreters) 5 Easy to distribute/broadcast (audio already mixed) • SFU mode keeps flexibility for video • Easy to subscribe to a subset of participants, or none at all
  • 23. Audio MCU + Video SFU • What we usually call the “hybrid approach” • Audio from participants is mixed (MCU) • Video from participants is relayed (SFU) • Mixing only audio has a few advantages 1 Audiomixing lighter than Videomixing, so relative impact 2 Participants with constraints (CPU/BW) can stick to audio only 3 In case audio is SIP-based, easy to hook to PSTN 4 Decoupling audio from video allows for more options (e.g., interpreters) 5 Easy to distribute/broadcast (audio already mixed) • SFU mode keeps flexibility for video • Easy to subscribe to a subset of participants, or none at all
  • 24. Audio MCU + Video SFU https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
  • 28. A practical example: Meetecho @ IETF 108
  • 29. A practical example: Meetecho @ IETF 108 https://www.youtube.com/watch?v=DV0q9s94RL8
  • 30. A practical example: Meetecho @ IETF 108 https://www.youtube.com/watch?v=DV0q9s94RL8
  • 31. A practical example: Meetecho @ IETF 108 https://www.youtube.com/watch?v=DV0q9s94RL8
  • 32. A practical example: Meetecho @ IETF 108 https://www.youtube.com/watch?v=DV0q9s94RL8
  • 33. Integrating with (legacy) conferencing systems
  • 34. Integrating with (legacy) conferencing systems
  • 35. Integrating with (legacy) conferencing systems
  • 36. A few practical examples
  • 37. A few practical examples http://www.januscon.it/2019/talk.php?t=nexmo (Giacomo Vacca)
  • 38. A few practical examples http://www.januscon.it/2019/talk.php?t=mojolingo (Luca Pradovera)
  • 40. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 41. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 42. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 43. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 44. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 45. What about using browsers as an MCU? • Browsers often already used that way for recording/broadcasting • e.g., headless browser joining as participant • External tool (e.g., ffmpeg) captures audio/video from browser • Canvas (and WebRTC) allow for a more integrated functionality, though • e.g., composition done on a canvas object (basically an MCU!) • canvas.captureStream() to turn it into a WebRTC stream • ...and, why not, WebAudio to do audio too! • Used by companies like Streamyard and Stage TEN for broadcasting An ugly canvas+WebRTC demo • https://janus.conf.meetecho.com/canvas
  • 46. Masashi Ganeko’s MCU in a Browser https://speakerdeck.com/mganeko/build-webrtc-mcu-on-browser
  • 47. Masashi Ganeko’s MCU in a Browser https://speakerdeck.com/mganeko/build-webrtc-mcu-on-browser
  • 48. Tim Panton’s Book Club! https://rendezvous.zone
  • 49. Tim Panton’s Book Club! https://rendezvous.zone
  • 50. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • https://www.meetecho.com