SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Janus as a WebRTC “enabler”
Having fun with RTP and external applications
Lorenzo Miniero
@elminiero
FOSDEM 2020 Real Time devroom
2nd February 2020, Brussels
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
Remember Janus?
Janus
General purpose, open source WebRTC server
• https://github.com/meetecho/janus-gateway
• Demos and documentation: https://janus.conf.meetecho.com
• Community: https://groups.google.com/forum/#!forum/meetecho-janus
A quick recap: modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Plugins expose Janus API over different “transports”
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT / Nanomsg
• “Application” logic implemented in plugins too
• Users attach to plugins via the Janus core
• The core handles the WebRTC stuff
• Plugins route/manipulate the media/data
• Plugins can be combined on client side as “bricks”
• Video SFU, Audio MCU, SIP gatewaying, broadcasting, etc.
Exchanging RTP (1): SIP plugin
https://janus.conf.meetecho.com/docs/sip
Exchanging RTP (2): NoSIP plugin
https://janus.conf.meetecho.com/docs/nosip
Re-broadcasting RTP: Streaming plugin
https://janus.conf.meetecho.com/docs/streaming
WebRTC-only MCU: AudioBridge plugin
https://janus.conf.meetecho.com/docs/audiobridge
WebRTC-only SFU: VideoRoom plugin
https://janus.conf.meetecho.com/docs/videoroom
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Forwarding an AudioBridge mix
Forwarding an AudioBridge mix
Forwarding an AudioBridge mix
{
"request" : "rtp_forward",
"room" : <unique ID of the room to add the forwarder to>,
"ssrc" : <SSRC to use to use when streaming; optional>,
"ptype" : <payload type to use when streaming; optional>,
"host" : <host address to forward the RTP packets to>,
"host_family" : <ipv4|ipv6; optional>,
"port" : <port to forward the RTP packets to>,
"srtp_suite" : <length of auth tag (32 or 80); optional>,
"srtp_crypto" : <crypto key (base64, like SDES); optional>,
"always_on" : <forward silence when the room is empty; optional>
}
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
{
"request" : "rtp_forward",
"room" : <unique ID of the room the publisher is in>,
"publisher_id" : <unique ID of the publisher to relay externally>,
"host" : <host address to forward the RTP packets to>,
"host_family" : <ipv4|ipv6; optional>,
"audio_port" : <port to forward the audio RTP packets to>,
"audio_ssrc" : <audio SSRC to use to use when streaming; optional>,
"audio_pt" : <audio payload type to use when streaming; optional>,
"audio_rtcp_port" : <latching port to get audio RTCP feedback; optional (unused)>,
"video_port" : <port to forward the video RTP packets to>,
"video_ssrc" : <video SSRC to use to use when streaming; optional>,
"video_pt" : <video payload type to use when streaming; optional>,
[.. video_XYZ_2 and video_XYZ_3 relay simulcast layers 1 and 2 ..]
"video_rtcp_port" : <latching port to get video RTCP feedback; optional>,
"data_port" : <port to forward the datachannel messages to>,
"srtp_suite" : <length of auth tag (32 or 80); optional>,
"srtp_crypto" : <crypto key (base64, like SDES); optional>
}
What can they be used for?
• Several use cases for such a functionality
• Remote media processing
• Recording outside of Janus
• Translation to different technology (e.g., RTMP)
• Videomixing or transcoding
• Transcriptions
• Identity verification
• Machine learning / Artificial Intelligence
• ...
• Scalability
• Large scale broadcasting
• Spreading same conference room in different regions
• ...
• More simply, whatever you might need need your favourite tool for
• Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
What can they be used for?
• Several use cases for such a functionality
• Remote media processing
• Recording outside of Janus
• Translation to different technology (e.g., RTMP)
• Videomixing or transcoding
• Transcriptions
• Identity verification
• Machine learning / Artificial Intelligence
• ...
• Scalability
• Large scale broadcasting
• Spreading same conference room in different regions
• ...
• More simply, whatever you might need need your favourite tool for
• Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
What can they be used for?
• Several use cases for such a functionality
• Remote media processing
• Recording outside of Janus
• Translation to different technology (e.g., RTMP)
• Videomixing or transcoding
• Transcriptions
• Identity verification
• Machine learning / Artificial Intelligence
• ...
• Scalability
• Large scale broadcasting
• Spreading same conference room in different regions
• ...
• More simply, whatever you might need need your favourite tool for
• Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
What can they be used for?
• Several use cases for such a functionality
• Remote media processing
• Recording outside of Janus
• Translation to different technology (e.g., RTMP)
• Videomixing or transcoding
• Transcriptions
• Identity verification
• Machine learning / Artificial Intelligence
• ...
• Scalability
• Large scale broadcasting
• Spreading same conference room in different regions
• ...
• More simply, whatever you might need need your favourite tool for
• Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
Large scale broadcasting
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
Large scale broadcasting
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
Spreading same room in different regions
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
Spreading same room in different regions
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
What to do next?
• The feature is pretty advanced already
• Used in production in different contexts
• Support for multicast and SDES-SRTP is a nice plus
• Some other plugins may benefit from the feature, though
• SIP/NoSIP, for call monitoring without another server
• Lua/DuktapeJS, for some easier-to-implement plugin logic
• Maybe implement RTP forwarding as a core feature instead?
• Right now each plugin does its own (duplicated features)
• Having it in the core would simplify extending to other plugins
• Might even become an Admin API feature (e.g., Lawful Interception?)
What to do next?
• The feature is pretty advanced already
• Used in production in different contexts
• Support for multicast and SDES-SRTP is a nice plus
• Some other plugins may benefit from the feature, though
• SIP/NoSIP, for call monitoring without another server
• Lua/DuktapeJS, for some easier-to-implement plugin logic
• Maybe implement RTP forwarding as a core feature instead?
• Right now each plugin does its own (duplicated features)
• Having it in the core would simplify extending to other plugins
• Might even become an Admin API feature (e.g., Lawful Interception?)
What to do next?
• The feature is pretty advanced already
• Used in production in different contexts
• Support for multicast and SDES-SRTP is a nice plus
• Some other plugins may benefit from the feature, though
• SIP/NoSIP, for call monitoring without another server
• Lua/DuktapeJS, for some easier-to-implement plugin logic
• Maybe implement RTP forwarding as a core feature instead?
• Right now each plugin does its own (duplicated features)
• Having it in the core would simplify extending to other plugins
• Might even become an Admin API feature (e.g., Lawful Interception?)
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• http://www.meetecho.com

Contenu connexe

Tendances

20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)rootfs32
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsThomas Morin
 
Project calico - introduction
Project calico - introductionProject calico - introduction
Project calico - introductionHazzim Anaya
 
Virtualized network with openvswitch
Virtualized network with openvswitchVirtualized network with openvswitch
Virtualized network with openvswitchSim Janghoon
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaArvind Kumar G.S
 
An SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsGiacomo Vacca
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21Lorenzo Miniero
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
Cilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshCilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshChristian Posta
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
SIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingSIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingHossein Yavari
 
Insights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryInsights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryNicolas Navet
 
Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...Michael Elder
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 
Cloud Monitoring with Prometheus
Cloud Monitoring with PrometheusCloud Monitoring with Prometheus
Cloud Monitoring with PrometheusQAware GmbH
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and KamailioGiacomo Vacca
 
Introduction to Kamailio (TADSummit 2020 Asia)
Introduction to Kamailio (TADSummit 2020 Asia)Introduction to Kamailio (TADSummit 2020 Asia)
Introduction to Kamailio (TADSummit 2020 Asia)Fred Posner
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSocketsGunnar Hillert
 

Tendances (20)

20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)
 
Kamailio - Load Balancing Load Balancers
Kamailio - Load Balancing Load BalancersKamailio - Load Balancing Load Balancers
Kamailio - Load Balancing Load Balancers
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
 
Project calico - introduction
Project calico - introductionProject calico - introduction
Project calico - introduction
 
Virtualized network with openvswitch
Virtualized network with openvswitchVirtualized network with openvswitch
Virtualized network with openvswitch
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
 
An SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environments
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Cilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshCilium + Istio with Gloo Mesh
Cilium + Istio with Gloo Mesh
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
SIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingSIPREC RTPEngine Media Forking
SIPREC RTPEngine Media Forking
 
Insights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryInsights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service Discovery
 
Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Cloud Monitoring with Prometheus
Cloud Monitoring with PrometheusCloud Monitoring with Prometheus
Cloud Monitoring with Prometheus
 
Open Policy Agent
Open Policy AgentOpen Policy Agent
Open Policy Agent
 
Continuous Integration and Kamailio
Continuous Integration and KamailioContinuous Integration and Kamailio
Continuous Integration and Kamailio
 
Introduction to Kamailio (TADSummit 2020 Asia)
Introduction to Kamailio (TADSummit 2020 Asia)Introduction to Kamailio (TADSummit 2020 Asia)
Introduction to Kamailio (TADSummit 2020 Asia)
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 

Similaire à Janus RTP forwarders @ FOSDEM 2020

Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Lorenzo Miniero
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Lorenzo Miniero
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Lorenzo Miniero
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023Lorenzo Miniero
 
Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014Steffen Larsen
 
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
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
WebRTC security+more @ KamailioWorld 2018
WebRTC security+more @ KamailioWorld 2018WebRTC security+more @ KamailioWorld 2018
WebRTC security+more @ KamailioWorld 2018Lorenzo Miniero
 
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDScaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDLorenzo 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
 
Making and breaking security in embedded devices
Making and breaking security in embedded devicesMaking and breaking security in embedded devices
Making and breaking security in embedded devicesYashin Mehaboobe
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Lorenzo Miniero
 
MPLAB® Harmony Ecosystem
MPLAB® Harmony EcosystemMPLAB® Harmony Ecosystem
MPLAB® Harmony EcosystemDesign World
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingLorenzo Miniero
 
FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?SeanDuBois3
 
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
 

Similaire à Janus RTP forwarders @ FOSDEM 2020 (20)

Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014
 
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
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
WebRTC security+more @ KamailioWorld 2018
WebRTC security+more @ KamailioWorld 2018WebRTC security+more @ KamailioWorld 2018
WebRTC security+more @ KamailioWorld 2018
 
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDScaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
 
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
 
Hacking QNX
Hacking QNXHacking QNX
Hacking QNX
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
Making and breaking security in embedded devices
Making and breaking security in embedded devicesMaking and breaking security in embedded devices
Making and breaking security in embedded devices
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017
 
MPLAB® Harmony Ecosystem
MPLAB® Harmony EcosystemMPLAB® Harmony Ecosystem
MPLAB® Harmony Ecosystem
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?
 
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...
 

Plus 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
 
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
 
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 + 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
 
Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Lorenzo 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
 
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
 

Plus de Lorenzo Miniero (17)

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
 
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
 
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 + 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
 
Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020
 
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
 
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
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 

Dernier

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 

Dernier (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Janus RTP forwarders @ FOSDEM 2020

  • 1. Janus as a WebRTC “enabler” Having fun with RTP and external applications Lorenzo Miniero @elminiero FOSDEM 2020 Real Time devroom 2nd February 2020, Brussels
  • 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. Remember Janus? Janus General purpose, open source WebRTC server • https://github.com/meetecho/janus-gateway • Demos and documentation: https://janus.conf.meetecho.com • Community: https://groups.google.com/forum/#!forum/meetecho-janus
  • 4. A quick recap: modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Plugins expose Janus API over different “transports” • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT / Nanomsg • “Application” logic implemented in plugins too • Users attach to plugins via the Janus core • The core handles the WebRTC stuff • Plugins route/manipulate the media/data • Plugins can be combined on client side as “bricks” • Video SFU, Audio MCU, SIP gatewaying, broadcasting, etc.
  • 5. Exchanging RTP (1): SIP plugin https://janus.conf.meetecho.com/docs/sip
  • 6. Exchanging RTP (2): NoSIP plugin https://janus.conf.meetecho.com/docs/nosip
  • 7. Re-broadcasting RTP: Streaming plugin https://janus.conf.meetecho.com/docs/streaming
  • 8. WebRTC-only MCU: AudioBridge plugin https://janus.conf.meetecho.com/docs/audiobridge
  • 9. WebRTC-only SFU: VideoRoom plugin https://janus.conf.meetecho.com/docs/videoroom
  • 10. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 11. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 12. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 13. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 16. Forwarding an AudioBridge mix { "request" : "rtp_forward", "room" : <unique ID of the room to add the forwarder to>, "ssrc" : <SSRC to use to use when streaming; optional>, "ptype" : <payload type to use when streaming; optional>, "host" : <host address to forward the RTP packets to>, "host_family" : <ipv4|ipv6; optional>, "port" : <port to forward the RTP packets to>, "srtp_suite" : <length of auth tag (32 or 80); optional>, "srtp_crypto" : <crypto key (base64, like SDES); optional>, "always_on" : <forward silence when the room is empty; optional> }
  • 20. Forwarding individual VideoRoom streams { "request" : "rtp_forward", "room" : <unique ID of the room the publisher is in>, "publisher_id" : <unique ID of the publisher to relay externally>, "host" : <host address to forward the RTP packets to>, "host_family" : <ipv4|ipv6; optional>, "audio_port" : <port to forward the audio RTP packets to>, "audio_ssrc" : <audio SSRC to use to use when streaming; optional>, "audio_pt" : <audio payload type to use when streaming; optional>, "audio_rtcp_port" : <latching port to get audio RTCP feedback; optional (unused)>, "video_port" : <port to forward the video RTP packets to>, "video_ssrc" : <video SSRC to use to use when streaming; optional>, "video_pt" : <video payload type to use when streaming; optional>, [.. video_XYZ_2 and video_XYZ_3 relay simulcast layers 1 and 2 ..] "video_rtcp_port" : <latching port to get video RTCP feedback; optional>, "data_port" : <port to forward the datachannel messages to>, "srtp_suite" : <length of auth tag (32 or 80); optional>, "srtp_crypto" : <crypto key (base64, like SDES); optional> }
  • 21. What can they be used for? • Several use cases for such a functionality • Remote media processing • Recording outside of Janus • Translation to different technology (e.g., RTMP) • Videomixing or transcoding • Transcriptions • Identity verification • Machine learning / Artificial Intelligence • ... • Scalability • Large scale broadcasting • Spreading same conference room in different regions • ... • More simply, whatever you might need need your favourite tool for • Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
  • 22. What can they be used for? • Several use cases for such a functionality • Remote media processing • Recording outside of Janus • Translation to different technology (e.g., RTMP) • Videomixing or transcoding • Transcriptions • Identity verification • Machine learning / Artificial Intelligence • ... • Scalability • Large scale broadcasting • Spreading same conference room in different regions • ... • More simply, whatever you might need need your favourite tool for • Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
  • 23. What can they be used for? • Several use cases for such a functionality • Remote media processing • Recording outside of Janus • Translation to different technology (e.g., RTMP) • Videomixing or transcoding • Transcriptions • Identity verification • Machine learning / Artificial Intelligence • ... • Scalability • Large scale broadcasting • Spreading same conference room in different regions • ... • More simply, whatever you might need need your favourite tool for • Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
  • 24. What can they be used for? • Several use cases for such a functionality • Remote media processing • Recording outside of Janus • Translation to different technology (e.g., RTMP) • Videomixing or transcoding • Transcriptions • Identity verification • Machine learning / Artificial Intelligence • ... • Scalability • Large scale broadcasting • Spreading same conference room in different regions • ... • More simply, whatever you might need need your favourite tool for • Gstreamer, FFmpeg, libav, VLC, OpenCV, etc.
  • 27. Spreading same room in different regions https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 28. Spreading same room in different regions https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 29. What to do next? • The feature is pretty advanced already • Used in production in different contexts • Support for multicast and SDES-SRTP is a nice plus • Some other plugins may benefit from the feature, though • SIP/NoSIP, for call monitoring without another server • Lua/DuktapeJS, for some easier-to-implement plugin logic • Maybe implement RTP forwarding as a core feature instead? • Right now each plugin does its own (duplicated features) • Having it in the core would simplify extending to other plugins • Might even become an Admin API feature (e.g., Lawful Interception?)
  • 30. What to do next? • The feature is pretty advanced already • Used in production in different contexts • Support for multicast and SDES-SRTP is a nice plus • Some other plugins may benefit from the feature, though • SIP/NoSIP, for call monitoring without another server • Lua/DuktapeJS, for some easier-to-implement plugin logic • Maybe implement RTP forwarding as a core feature instead? • Right now each plugin does its own (duplicated features) • Having it in the core would simplify extending to other plugins • Might even become an Admin API feature (e.g., Lawful Interception?)
  • 31. What to do next? • The feature is pretty advanced already • Used in production in different contexts • Support for multicast and SDES-SRTP is a nice plus • Some other plugins may benefit from the feature, though • SIP/NoSIP, for call monitoring without another server • Lua/DuktapeJS, for some easier-to-implement plugin logic • Maybe implement RTP forwarding as a core feature instead? • Right now each plugin does its own (duplicated features) • Having it in the core would simplify extending to other plugins • Might even become an Admin API feature (e.g., Lawful Interception?)
  • 32. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • http://www.meetecho.com