SlideShare a Scribd company logo
JamRTC
Jam sessions with Janus!
Lorenzo Miniero
@elminiero
Wonder WebRTC unConference
May 18th 2021
Who am I?
Lorenzo Miniero
• Ph.D @ UniNA
• Chairman @ Meetecho
• Main author of Janus
Contacts and info
• lorenzo@meetecho.com
• https://twitter.com/elminiero
• https://www.slideshare.net/LorenzoMiniero
• https://soundcloud.com/lminiero
“Hi, I’m Troy McClure. You may remember me from...”
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 middle age crisis!
https://soundcloud.com/lminiero
An amazing music ecosystem on Linux
“Can WebRTC help musicians?”
https://fosdem.org/2021/schedule/event/webrtc_musicians/
Native approach for Jam sessions?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• Thinking WebRTC, only apparently a traditional use case
• Yes, we can see it as a “conference” of sorts...
• ... but we’re not really talking, and latency is much more important
• Browsers are not a good option, here
• Pipeline may be good for voice, but latency too high for live music
• Unfortunately, on Linux they don’t support Jack, only Pulseaudio
• Hard to capture anything else than a microphone
• Besides, as we said they’ll mess with the source audio anyway
Native approach for Jam sessions?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• Thinking WebRTC, only apparently a traditional use case
• Yes, we can see it as a “conference” of sorts...
• ... but we’re not really talking, and latency is much more important
• Browsers are not a good option, here
• Pipeline may be good for voice, but latency too high for live music
• Unfortunately, on Linux they don’t support Jack, only Pulseaudio
• Hard to capture anything else than a microphone
• Besides, as we said they’ll mess with the source audio anyway
Native approach for Jam sessions?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• Thinking WebRTC, only apparently a traditional use case
• Yes, we can see it as a “conference” of sorts...
• ... but we’re not really talking, and latency is much more important
• Browsers are not a good option, here
• Pipeline may be good for voice, but latency too high for live music
• Unfortunately, on Linux they don’t support Jack, only Pulseaudio
• Hard to capture anything else than a microphone
• Besides, as we said they’ll mess with the source audio anyway
JamRTC – Jam sessions with Janus!
https://github.com/lminiero/jamrtc
JamRTC – Jam sessions with Janus!
• Simple (and very ugly) GTK+ 3 application
• Static UI done with Glade
• Janus used as an SFU
• Signalling implemented via libwebsockets
• VideoRoom display property “abused” for correlation
• GStreamer 1.x pipelines for WebRTC PeerConnections
• Audio/video PeerConnections for “chat”
• Audio-only PeerConnections for instruments
• Focus on Jack to minimize latency, so Linux-only at the moment
• GStreamer pipelines easy to manipulate, though
• Any equivalent technology on Windows/MacOS?
JamRTC – Jam sessions with Janus!
• Simple (and very ugly) GTK+ 3 application
• Static UI done with Glade
• Janus used as an SFU
• Signalling implemented via libwebsockets
• VideoRoom display property “abused” for correlation
• GStreamer 1.x pipelines for WebRTC PeerConnections
• Audio/video PeerConnections for “chat”
• Audio-only PeerConnections for instruments
• Focus on Jack to minimize latency, so Linux-only at the moment
• GStreamer pipelines easy to manipulate, though
• Any equivalent technology on Windows/MacOS?
JamRTC – Jam sessions with Janus!
• Simple (and very ugly) GTK+ 3 application
• Static UI done with Glade
• Janus used as an SFU
• Signalling implemented via libwebsockets
• VideoRoom display property “abused” for correlation
• GStreamer 1.x pipelines for WebRTC PeerConnections
• Audio/video PeerConnections for “chat”
• Audio-only PeerConnections for instruments
• Focus on Jack to minimize latency, so Linux-only at the moment
• GStreamer pipelines easy to manipulate, though
• Any equivalent technology on Windows/MacOS?
JamRTC – Jam sessions with Janus!
• Simple (and very ugly) GTK+ 3 application
• Static UI done with Glade
• Janus used as an SFU
• Signalling implemented via libwebsockets
• VideoRoom display property “abused” for correlation
• GStreamer 1.x pipelines for WebRTC PeerConnections
• Audio/video PeerConnections for “chat”
• Audio-only PeerConnections for instruments
• Focus on Jack to minimize latency, so Linux-only at the moment
• GStreamer pipelines easy to manipulate, though
• Any equivalent technology on Windows/MacOS?
The ugliest UI you’ll see today...
The ugliest UI you’ll see today...
Integrating with local Jack setup
Integrating with local Jack setup
Integrating with local Jack setup
Integrating with local Jack setup
What’s next?
Still far from done...
• Latency still too high
• Only tested by myself with two laptops connected via WiFi, though
• Would love some feedback on actual sessions!
• Not clear how to evaluate actual latency
• We need to minimize the “local” work (little we can do about the network)
• Can jack_delay or jack_iodelay help?
• A few hacks to try and mitigate that
• Latency in rtpbin forced to 0 (bad idea?)
• Anything else?
• Would it be pointless anyway, without server-side synchronization?
Still far from done...
• Latency still too high
• Only tested by myself with two laptops connected via WiFi, though
• Would love some feedback on actual sessions!
• Not clear how to evaluate actual latency
• We need to minimize the “local” work (little we can do about the network)
• Can jack_delay or jack_iodelay help?
• A few hacks to try and mitigate that
• Latency in rtpbin forced to 0 (bad idea?)
• Anything else?
• Would it be pointless anyway, without server-side synchronization?
Still far from done...
• Latency still too high
• Only tested by myself with two laptops connected via WiFi, though
• Would love some feedback on actual sessions!
• Not clear how to evaluate actual latency
• We need to minimize the “local” work (little we can do about the network)
• Can jack_delay or jack_iodelay help?
• A few hacks to try and mitigate that
• Latency in rtpbin forced to 0 (bad idea?)
• Anything else?
• Would it be pointless anyway, without server-side synchronization?
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• https://www.meetecho.com

More Related Content

PDF
Turning live events to virtual with Janus
PDF
WebRTC, RED and Janus @ ClueCon21
PDF
Janus/SIP @ OpenSIPS 2019
PDF
Janus + Audio @ Open Source World
PDF
FOSDEM2018 Janus Lua plugin presentation
PDF
Simulcast/SVC @ IIT-RTC 2019
PDF
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
PDF
Scaling WebRTC applications with Janus
Turning live events to virtual with Janus
WebRTC, RED and Janus @ ClueCon21
Janus/SIP @ OpenSIPS 2019
Janus + Audio @ Open Source World
FOSDEM2018 Janus Lua plugin presentation
Simulcast/SVC @ IIT-RTC 2019
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Scaling WebRTC applications with Janus

What's hot (20)

PDF
Janus @ ClueCon 2019
PDF
WebRTC Rockstars Asian Tour 2017
PDF
Janus @ WebRTC Meetup Stockholm
PDF
Janus @ RTC2017 Beijing
PDF
Insertable Streams and E2EE @ ClueCon2020
PDF
Can WebRTC help musicians? @ FOSDEM 2021
PDF
Write a SocialTV app @ OpenSIPS 2021
PDF
WHIP WebRTC Broadcasting @ FOSDEM 2022
PDF
WebRTC security+more @ KamailioWorld 2018
PDF
SIP/WebRTC load testing @ KamailioWorld 2017
PDF
FOSDEM2017 - Janus Event Handlers
PDF
Fuzzing Janus @ IPTComm 2019
PDF
Janus Workshop @ ClueCon 2020
PDF
Can SFUs and MCUs be friends @ IIT-RTC 2020
PDF
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
PDF
Multistream in Janus @ CommCon 2019
PDF
Fuzzing RTC @ Kamailio World 2019
PDF
Janus: an open source and general purpose WebRTC (gateway) server
PDF
Janus Workshop pt.2 @ ClueCon 2021
PDF
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
Janus @ ClueCon 2019
WebRTC Rockstars Asian Tour 2017
Janus @ WebRTC Meetup Stockholm
Janus @ RTC2017 Beijing
Insertable Streams and E2EE @ ClueCon2020
Can WebRTC help musicians? @ FOSDEM 2021
Write a SocialTV app @ OpenSIPS 2021
WHIP WebRTC Broadcasting @ FOSDEM 2022
WebRTC security+more @ KamailioWorld 2018
SIP/WebRTC load testing @ KamailioWorld 2017
FOSDEM2017 - Janus Event Handlers
Fuzzing Janus @ IPTComm 2019
Janus Workshop @ ClueCon 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
Multistream in Janus @ CommCon 2019
Fuzzing RTC @ Kamailio World 2019
Janus: an open source and general purpose WebRTC (gateway) server
Janus Workshop pt.2 @ ClueCon 2021
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
Ad

Similar to JamRTC @ Wonder WebRTC unConference (20)

PDF
Janus/Asterisk @ Astricon 2017
PDF
[workshop] The Revolutionary WebRTC
PDF
Janus RTP forwarders @ FOSDEM 2020
PDF
WebRTC Broadcasting @ TADSummit 2023
PPTX
WebRTC overview
PDF
Scaling server side web rtc applications the janus challenge by lorenzo miniero
PDF
Janus @ DevDay Napoli
PDF
WHIP and Janus @ IIT-RTC 2021
PDF
WebRTC Workshop 2013 given at the IMS World Forum
PDF
Janus workshop @ RTC2019 Beijing
PDF
Janus conf'19: janus client side
PDF
Welcome to JanusCon! -- Past, Present and Future of Janus
PDF
Janus SFU cascading @ IIT-RTC 2022
PDF
BWE in Janus
PDF
Status of WebRTC across Asia by Alan Quayle +++
PDF
DevCon 5 (December 2013) - WebRTC & WebSockets
PDF
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
PDF
Janus + NDI @ ClueCon 2021
PDF
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
PDF
From Mediasoup WebRTC to Livekit Self-Hosted .pdf
Janus/Asterisk @ Astricon 2017
[workshop] The Revolutionary WebRTC
Janus RTP forwarders @ FOSDEM 2020
WebRTC Broadcasting @ TADSummit 2023
WebRTC overview
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Janus @ DevDay Napoli
WHIP and Janus @ IIT-RTC 2021
WebRTC Workshop 2013 given at the IMS World Forum
Janus workshop @ RTC2019 Beijing
Janus conf'19: janus client side
Welcome to JanusCon! -- Past, Present and Future of Janus
Janus SFU cascading @ IIT-RTC 2022
BWE in Janus
Status of WebRTC across Asia by Alan Quayle +++
DevCon 5 (December 2013) - WebRTC & WebSockets
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
Janus + NDI @ ClueCon 2021
Multistream in SIP and NoSIP @ OpenSIPS Summit 2025
From Mediasoup WebRTC to Livekit Self-Hosted .pdf
Ad

More from Lorenzo Miniero (9)

PDF
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
PDF
WebRTC and QUIC: how hard can it be? @ RTC.ON 2024
PDF
WebRTC and SIP not just audio and video @ OpenSIPS 2024
PDF
SIP trunking in Janus @ Kamailio World 2024
PDF
Getting AV1/SVC to work in the Janus WebRTC Server
PDF
The challenges of hybrid meetings @ CommCon 2023
PDF
Real-Time Text and WebRTC @ Kamailio World 2023
PDF
Become a rockstar using FOSS!
PDF
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
WebRTC and QUIC: how hard can it be? @ RTC.ON 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
SIP trunking in Janus @ Kamailio World 2024
Getting AV1/SVC to work in the Janus WebRTC Server
The challenges of hybrid meetings @ CommCon 2023
Real-Time Text and WebRTC @ Kamailio World 2023
Become a rockstar using FOSS!
SIP transfer with Janus/WebRTC @ OpenSIPS 2022

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Machine Learning_overview_presentation.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Electronic commerce courselecture one. Pdf
PDF
cuic standard and advanced reporting.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Machine Learning_overview_presentation.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Spectral efficient network and resource selection model in 5G networks
The AUB Centre for AI in Media Proposal.docx
Encapsulation_ Review paper, used for researhc scholars
Electronic commerce courselecture one. Pdf
cuic standard and advanced reporting.pdf
A comparative analysis of optical character recognition models for extracting...
Programs and apps: productivity, graphics, security and other tools
Diabetes mellitus diagnosis method based random forest with bat algorithm
sap open course for s4hana steps from ECC to s4
Assigned Numbers - 2025 - Bluetooth® Document
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

JamRTC @ Wonder WebRTC unConference

  • 1. JamRTC Jam sessions with Janus! Lorenzo Miniero @elminiero Wonder WebRTC unConference May 18th 2021
  • 2. Who am I? Lorenzo Miniero • Ph.D @ UniNA • Chairman @ Meetecho • Main author of Janus Contacts and info • lorenzo@meetecho.com • https://twitter.com/elminiero • https://www.slideshare.net/LorenzoMiniero • https://soundcloud.com/lminiero
  • 3. “Hi, I’m Troy McClure. You may remember me from...” 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 middle age crisis! https://soundcloud.com/lminiero
  • 5. An amazing music ecosystem on Linux
  • 6. “Can WebRTC help musicians?” https://fosdem.org/2021/schedule/event/webrtc_musicians/
  • 7. Native approach for Jam sessions? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • Thinking WebRTC, only apparently a traditional use case • Yes, we can see it as a “conference” of sorts... • ... but we’re not really talking, and latency is much more important • Browsers are not a good option, here • Pipeline may be good for voice, but latency too high for live music • Unfortunately, on Linux they don’t support Jack, only Pulseaudio • Hard to capture anything else than a microphone • Besides, as we said they’ll mess with the source audio anyway
  • 8. Native approach for Jam sessions? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • Thinking WebRTC, only apparently a traditional use case • Yes, we can see it as a “conference” of sorts... • ... but we’re not really talking, and latency is much more important • Browsers are not a good option, here • Pipeline may be good for voice, but latency too high for live music • Unfortunately, on Linux they don’t support Jack, only Pulseaudio • Hard to capture anything else than a microphone • Besides, as we said they’ll mess with the source audio anyway
  • 9. Native approach for Jam sessions? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • Thinking WebRTC, only apparently a traditional use case • Yes, we can see it as a “conference” of sorts... • ... but we’re not really talking, and latency is much more important • Browsers are not a good option, here • Pipeline may be good for voice, but latency too high for live music • Unfortunately, on Linux they don’t support Jack, only Pulseaudio • Hard to capture anything else than a microphone • Besides, as we said they’ll mess with the source audio anyway
  • 10. JamRTC – Jam sessions with Janus! https://github.com/lminiero/jamrtc
  • 11. JamRTC – Jam sessions with Janus! • Simple (and very ugly) GTK+ 3 application • Static UI done with Glade • Janus used as an SFU • Signalling implemented via libwebsockets • VideoRoom display property “abused” for correlation • GStreamer 1.x pipelines for WebRTC PeerConnections • Audio/video PeerConnections for “chat” • Audio-only PeerConnections for instruments • Focus on Jack to minimize latency, so Linux-only at the moment • GStreamer pipelines easy to manipulate, though • Any equivalent technology on Windows/MacOS?
  • 12. JamRTC – Jam sessions with Janus! • Simple (and very ugly) GTK+ 3 application • Static UI done with Glade • Janus used as an SFU • Signalling implemented via libwebsockets • VideoRoom display property “abused” for correlation • GStreamer 1.x pipelines for WebRTC PeerConnections • Audio/video PeerConnections for “chat” • Audio-only PeerConnections for instruments • Focus on Jack to minimize latency, so Linux-only at the moment • GStreamer pipelines easy to manipulate, though • Any equivalent technology on Windows/MacOS?
  • 13. JamRTC – Jam sessions with Janus! • Simple (and very ugly) GTK+ 3 application • Static UI done with Glade • Janus used as an SFU • Signalling implemented via libwebsockets • VideoRoom display property “abused” for correlation • GStreamer 1.x pipelines for WebRTC PeerConnections • Audio/video PeerConnections for “chat” • Audio-only PeerConnections for instruments • Focus on Jack to minimize latency, so Linux-only at the moment • GStreamer pipelines easy to manipulate, though • Any equivalent technology on Windows/MacOS?
  • 14. JamRTC – Jam sessions with Janus! • Simple (and very ugly) GTK+ 3 application • Static UI done with Glade • Janus used as an SFU • Signalling implemented via libwebsockets • VideoRoom display property “abused” for correlation • GStreamer 1.x pipelines for WebRTC PeerConnections • Audio/video PeerConnections for “chat” • Audio-only PeerConnections for instruments • Focus on Jack to minimize latency, so Linux-only at the moment • GStreamer pipelines easy to manipulate, though • Any equivalent technology on Windows/MacOS?
  • 15. The ugliest UI you’ll see today...
  • 16. The ugliest UI you’ll see today...
  • 22. Still far from done... • Latency still too high • Only tested by myself with two laptops connected via WiFi, though • Would love some feedback on actual sessions! • Not clear how to evaluate actual latency • We need to minimize the “local” work (little we can do about the network) • Can jack_delay or jack_iodelay help? • A few hacks to try and mitigate that • Latency in rtpbin forced to 0 (bad idea?) • Anything else? • Would it be pointless anyway, without server-side synchronization?
  • 23. Still far from done... • Latency still too high • Only tested by myself with two laptops connected via WiFi, though • Would love some feedback on actual sessions! • Not clear how to evaluate actual latency • We need to minimize the “local” work (little we can do about the network) • Can jack_delay or jack_iodelay help? • A few hacks to try and mitigate that • Latency in rtpbin forced to 0 (bad idea?) • Anything else? • Would it be pointless anyway, without server-side synchronization?
  • 24. Still far from done... • Latency still too high • Only tested by myself with two laptops connected via WiFi, though • Would love some feedback on actual sessions! • Not clear how to evaluate actual latency • We need to minimize the “local” work (little we can do about the network) • Can jack_delay or jack_iodelay help? • A few hacks to try and mitigate that • Latency in rtpbin forced to 0 (bad idea?) • Anything else? • Would it be pointless anyway, without server-side synchronization?
  • 25. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • https://www.meetecho.com