SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Can WebRTC help musicians?
Going beyond traditional and boring use cases to support the arts
Lorenzo Miniero
@elminiero
FOSDEM 2021 Real Time devroom
6th February 2021, Brussels My couch
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
A middle age crisis!
https://soundcloud.com/lminiero
An amazing music ecosystem on Linux
“Can WebRTC help musicians?”
https://linuxmusicians.com/viewtopic.php?t=21617
Tsahi’s article back in 2017
https://bloggeek.me/sound-guru-webrtc/ (2017)
Opus helps already!
• WebRTC mandates Opus, and it’s a good thing
• High quality audio codec designed for the Internet
• Very flexible in sampling rates, bitrates, etc.
• Different profiles for voice and music
• Both encoding and decoding vary, in case
• Can be mono and stereo (or more, as we’ll see in a minute!)
• With the right bitrate, it can sound quite good
• ... and most importantly, with the help of WebRTC, real-time!
A “live” example: pre-recorded music via WebRTC
https://janus.conf.meetecho.com/streamingtest
Opus helps already!
• WebRTC mandates Opus, and it’s a good thing
• High quality audio codec designed for the Internet
• Very flexible in sampling rates, bitrates, etc.
• Different profiles for voice and music
• Both encoding and decoding vary, in case
• Can be mono and stereo (or more, as we’ll see in a minute!)
• With the right bitrate, it can sound quite good
• ... and most importantly, with the help of WebRTC, real-time!
A “live” example: pre-recorded music via WebRTC
https://janus.conf.meetecho.com/streamingtest
Opus helps already!
• WebRTC mandates Opus, and it’s a good thing
• High quality audio codec designed for the Internet
• Very flexible in sampling rates, bitrates, etc.
• Different profiles for voice and music
• Both encoding and decoding vary, in case
• Can be mono and stereo (or more, as we’ll see in a minute!)
• With the right bitrate, it can sound quite good
• ... and most importantly, with the help of WebRTC, real-time!
A “live” example: pre-recorded music via WebRTC
https://janus.conf.meetecho.com/streamingtest
Opus helps already!
• WebRTC mandates Opus, and it’s a good thing
• High quality audio codec designed for the Internet
• Very flexible in sampling rates, bitrates, etc.
• Different profiles for voice and music
• Both encoding and decoding vary, in case
• Can be mono and stereo (or more, as we’ll see in a minute!)
• With the right bitrate, it can sound quite good
• ... and most importantly, with the help of WebRTC, real-time!
A “live” example: pre-recorded music via WebRTC
https://janus.conf.meetecho.com/streamingtest
Multiopus: 5.1 and 7.1 surround audio
• This is little known, but Chrome does support surround audio in WebRTC
• Not really documented or standardized, though
• Mostly just there because it’s used by Stadia, today
• Multiopus (5.1 and 7.1)
• Each packet is basically OGG with multiple stereo Opus streams
• Number of streams determines number of channels
• SDP munging needed on both offer and answer to specify the mapping
Some reading material if you’re curious
• https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in-
libwebrtc-and-chrome/
• https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
Multiopus: 5.1 and 7.1 surround audio
• This is little known, but Chrome does support surround audio in WebRTC
• Not really documented or standardized, though
• Mostly just there because it’s used by Stadia, today
• Multiopus (5.1 and 7.1)
• Each packet is basically OGG with multiple stereo Opus streams
• Number of streams determines number of channels
• SDP munging needed on both offer and answer to specify the mapping
Some reading material if you’re curious
• https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in-
libwebrtc-and-chrome/
• https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
Multiopus: 5.1 and 7.1 surround audio
• This is little known, but Chrome does support surround audio in WebRTC
• Not really documented or standardized, though
• Mostly just there because it’s used by Stadia, today
• Multiopus (5.1 and 7.1)
• Each packet is basically OGG with multiple stereo Opus streams
• Number of streams determines number of channels
• SDP munging needed on both offer and answer to specify the mapping
Some reading material if you’re curious
• https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in-
libwebrtc-and-chrome/
• https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
Tutoring and training
• A first simple use case: music lessons
• Can be 1-to-1, or 1-to-many
• In both cases, the closest to a “traditional” scenario
• It can basically be treated as a generic videocall or videoconference
• Most of the interaction is conversational
• No real need for plugging instruments directly in the call
• A regular mic is more than enough in this context
• My sister uses Skype to teach her students...
• ... so why not WebRTC?
Cool add-on: pitch detection?
• https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
Tutoring and training
• A first simple use case: music lessons
• Can be 1-to-1, or 1-to-many
• In both cases, the closest to a “traditional” scenario
• It can basically be treated as a generic videocall or videoconference
• Most of the interaction is conversational
• No real need for plugging instruments directly in the call
• A regular mic is more than enough in this context
• My sister uses Skype to teach her students...
• ... so why not WebRTC?
Cool add-on: pitch detection?
• https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
Tutoring and training
• A first simple use case: music lessons
• Can be 1-to-1, or 1-to-many
• In both cases, the closest to a “traditional” scenario
• It can basically be treated as a generic videocall or videoconference
• Most of the interaction is conversational
• No real need for plugging instruments directly in the call
• A regular mic is more than enough in this context
• My sister uses Skype to teach her students...
• ... so why not WebRTC?
Cool add-on: pitch detection?
• https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
Tutoring and training
• A first simple use case: music lessons
• Can be 1-to-1, or 1-to-many
• In both cases, the closest to a “traditional” scenario
• It can basically be treated as a generic videocall or videoconference
• Most of the interaction is conversational
• No real need for plugging instruments directly in the call
• A regular mic is more than enough in this context
• My sister uses Skype to teach her students...
• ... so why not WebRTC?
Cool add-on: pitch detection?
• https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
Broadcasting concerts
• A more interesting scenario: broadcasting concerts
• Basically a 1-to-many (maybe few-to-many?) streaming session
• Still traditional, if you will, but with a few caveats
• The audio source better not be the browser
• Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.)
• You want the broadcasted audio to be as close as possible to what was captured
• OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here
• This scenario is commonly done with HLS, today...
• ... but you may want less delay and/or a way to interact with the audience!
Broadcasting concerts
• A more interesting scenario: broadcasting concerts
• Basically a 1-to-many (maybe few-to-many?) streaming session
• Still traditional, if you will, but with a few caveats
• The audio source better not be the browser
• Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.)
• You want the broadcasted audio to be as close as possible to what was captured
• OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here
• This scenario is commonly done with HLS, today...
• ... but you may want less delay and/or a way to interact with the audience!
Broadcasting concerts
• A more interesting scenario: broadcasting concerts
• Basically a 1-to-many (maybe few-to-many?) streaming session
• Still traditional, if you will, but with a few caveats
• The audio source better not be the browser
• Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.)
• You want the broadcasted audio to be as close as possible to what was captured
• OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here
• This scenario is commonly done with HLS, today...
• ... but you may want less delay and/or a way to interact with the audience!
About interacting with the audience...
About interacting with the audience...
Not really music, but close enough!
https://chrisuehlinger.com/blog/2020/06/16/unshattering-the-audience-building-theatre-
on-the-web-in-2020
Playing with music and WebRTC
• Many cool things that can be done with
WebRTC
• e.g., browser or native app as an UI to
a remote music setup
• Several more or less basic use cases
come to mind
• Writing music in a browser
• Interaction with (remote) instruments
• Visual synchronization of music data
• Integration in (remote) DAW
• Distributed jam sessions
• ...
Playing with music and WebRTC
• Many cool things that can be done with
WebRTC
• e.g., browser or native app as an UI to
a remote music setup
• Several more or less basic use cases
come to mind
• Writing music in a browser
• Interaction with (remote) instruments
• Visual synchronization of music data
• Integration in (remote) DAW
• Distributed jam sessions
• ...
A silly approach at online composition!
https://youtu.be/d1hOR27r4uY?t=1158
Playing a keyboard with other people
https://youtu.be/8Hzg4hSJMsQ?t=790
Playing a keyboard with other people
https://youtu.be/8Hzg4hSJMsQ?t=790
Web MIDI API + Insertable Streams
https://twitter.com/komasshu/status/1329785808446836736
Jam sessions
• What about really playing with other people, though?
• Harder to do because of this ugly pandemic...
• 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
Jam sessions
• What about really playing with other people, though?
• Harder to do because of this ugly pandemic...
• 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
Jam sessions
• What about really playing with other people, though?
• Harder to do because of this ugly pandemic...
• 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
What about a native approach?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• It might be interesting to experiment with WebRTC as well
• e.g., Native client that uses Jack for audio input/output
• WebRTC exchange of live streams (P2P or via a server)
Idea for a personal fun/pet project of mine
• Native application based on GStreamer
• Ability to add local instruments, captured via Jack and encoded with Opus
• Janus as the reference WebRTC server for all the jam session “participants”
• Publishing local instruments, subscribing to remote ones
What about a native approach?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• It might be interesting to experiment with WebRTC as well
• e.g., Native client that uses Jack for audio input/output
• WebRTC exchange of live streams (P2P or via a server)
Idea for a personal fun/pet project of mine
• Native application based on GStreamer
• Ability to add local instruments, captured via Jack and encoded with Opus
• Janus as the reference WebRTC server for all the jam session “participants”
• Publishing local instruments, subscribing to remote ones
What about a native approach?
• A few, non-WebRTC, native solutions exist already
• e.g., Jamulus and NINJAM (both open source)
• It might be interesting to experiment with WebRTC as well
• e.g., Native client that uses Jack for audio input/output
• WebRTC exchange of live streams (P2P or via a server)
Idea for a personal fun/pet project of mine
• Native application based on GStreamer
• Ability to add local instruments, captured via Jack and encoded with Opus
• Janus as the reference WebRTC server for all the jam session “participants”
• Publishing local instruments, subscribing to remote ones
The ugliest diagram you’ll see today
A distributed/remote concert
• Whatever the approach, it might be useful to stream this remote session
• A truly distributed concert!
• If the session can be captured, it can be broadcast
• If an SFU is used, streams can be relayed as-is (they’re already there)
• Basically a few-to-many conferencing session
• Audio can also be mixed, though, either on the server or client side
• Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option
• Server-side mixing may be more “balanced” in terms of delay, though?
• In general, same considerations made before on broadcasting apply here too
A distributed/remote concert
• Whatever the approach, it might be useful to stream this remote session
• A truly distributed concert!
• If the session can be captured, it can be broadcast
• If an SFU is used, streams can be relayed as-is (they’re already there)
• Basically a few-to-many conferencing session
• Audio can also be mixed, though, either on the server or client side
• Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option
• Server-side mixing may be more “balanced” in terms of delay, though?
• In general, same considerations made before on broadcasting apply here too
A distributed/remote concert
• Whatever the approach, it might be useful to stream this remote session
• A truly distributed concert!
• If the session can be captured, it can be broadcast
• If an SFU is used, streams can be relayed as-is (they’re already there)
• Basically a few-to-many conferencing session
• Audio can also be mixed, though, either on the server or client side
• Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option
• Server-side mixing may be more “balanced” in terms of delay, though?
• In general, same considerations made before on broadcasting apply here too
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• https://www.meetecho.com

Contenu connexe

Tendances

Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Lorenzo Miniero
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Lorenzo Miniero
 
FOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationFOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationLorenzo 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
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmLorenzo Miniero
 
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/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Lorenzo Miniero
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Lorenzo Miniero
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceLorenzo Miniero
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Paolo Saviano
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Lorenzo Miniero
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Lorenzo Miniero
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmLorenzo Miniero
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Lorenzo 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
 

Tendances (20)

Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019
 
FOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationFOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentation
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
 
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/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup Stockholm
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019
 
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 @ RTC2017 Beijing
Janus @ RTC2017 BeijingJanus @ RTC2017 Beijing
Janus @ RTC2017 Beijing
 

Similaire à Can WebRTC help musicians? @ FOSDEM 2021

Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Lorenzo Miniero
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023Lorenzo 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
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!Lorenzo Miniero
 
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPress
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPressWordCamp Lightning Talk: Podcasting and Live Streaming with WordPress
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPressDigital Strategy Works LLC
 
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Maarten Balliauw
 
KazooCon 2014 - WebRTC
KazooCon 2014 - WebRTCKazooCon 2014 - WebRTC
KazooCon 2014 - WebRTC2600Hz
 
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
 
WebRTC - @eCommConf 2011
WebRTC - @eCommConf 2011WebRTC - @eCommConf 2011
WebRTC - @eCommConf 2011Jose de Castro
 
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...Jose De Castro - Presentation at Emerging Communications Conference & Awards ...
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...eCommConf
 
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...Europeana
 
HTML5 Trends + Cascade Server CMS by Uzo Okafor
HTML5 Trends + Cascade Server CMS by Uzo OkaforHTML5 Trends + Cascade Server CMS by Uzo Okafor
HTML5 Trends + Cascade Server CMS by Uzo Okaforhannonhill
 
Spotify: P2P music-on-demand streaming
Spotify: P2P music-on-demand streamingSpotify: P2P music-on-demand streaming
Spotify: P2P music-on-demand streamingRicardo Vice Santos
 
[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio CompetingAlive Kuo
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Derek Buitenhuis
 

Similaire à Can WebRTC help musicians? @ FOSDEM 2021 (20)

Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
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
 
Torino js
Torino jsTorino js
Torino js
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!
 
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPress
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPressWordCamp Lightning Talk: Podcasting and Live Streaming with WordPress
WordCamp Lightning Talk: Podcasting and Live Streaming with WordPress
 
Spotify: behind the scenes
Spotify: behind the scenesSpotify: behind the scenes
Spotify: behind the scenes
 
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...
 
KazooCon 2014 - WebRTC
KazooCon 2014 - WebRTCKazooCon 2014 - WebRTC
KazooCon 2014 - WebRTC
 
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
 
WebRTC - @eCommConf 2011
WebRTC - @eCommConf 2011WebRTC - @eCommConf 2011
WebRTC - @eCommConf 2011
 
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...Jose De Castro - Presentation at Emerging Communications Conference & Awards ...
Jose De Castro - Presentation at Emerging Communications Conference & Awards ...
 
Spotify: P2P music streaming
Spotify: P2P music streamingSpotify: P2P music streaming
Spotify: P2P music streaming
 
Wiki's and Podcasts
Wiki's and PodcastsWiki's and Podcasts
Wiki's and Podcasts
 
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...
Europeana Network Association Members Council Meeting, Copenhagen by Stephan ...
 
HTML5 Trends + Cascade Server CMS by Uzo Okafor
HTML5 Trends + Cascade Server CMS by Uzo OkaforHTML5 Trends + Cascade Server CMS by Uzo Okafor
HTML5 Trends + Cascade Server CMS by Uzo Okafor
 
Spotify: P2P music-on-demand streaming
Spotify: P2P music-on-demand streamingSpotify: P2P music-on-demand streaming
Spotify: P2P music-on-demand streaming
 
[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing[COSCUP 2013] Audio Competing
[COSCUP 2013] Audio Competing
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)
 
Intro to Podcasting
Intro to PodcastingIntro to Podcasting
Intro to Podcasting
 

Plus de Lorenzo 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
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Lorenzo Miniero
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022Lorenzo Miniero
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Lorenzo Miniero
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingLorenzo 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 (8)

Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC Server
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
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
 

Dernier

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Dernier (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Can WebRTC help musicians? @ FOSDEM 2021

  • 1. Can WebRTC help musicians? Going beyond traditional and boring use cases to support the arts Lorenzo Miniero @elminiero FOSDEM 2021 Real Time devroom 6th February 2021, Brussels My couch
  • 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. A middle age crisis! https://soundcloud.com/lminiero
  • 4. An amazing music ecosystem on Linux
  • 5. “Can WebRTC help musicians?” https://linuxmusicians.com/viewtopic.php?t=21617
  • 6. Tsahi’s article back in 2017 https://bloggeek.me/sound-guru-webrtc/ (2017)
  • 7. Opus helps already! • WebRTC mandates Opus, and it’s a good thing • High quality audio codec designed for the Internet • Very flexible in sampling rates, bitrates, etc. • Different profiles for voice and music • Both encoding and decoding vary, in case • Can be mono and stereo (or more, as we’ll see in a minute!) • With the right bitrate, it can sound quite good • ... and most importantly, with the help of WebRTC, real-time! A “live” example: pre-recorded music via WebRTC https://janus.conf.meetecho.com/streamingtest
  • 8. Opus helps already! • WebRTC mandates Opus, and it’s a good thing • High quality audio codec designed for the Internet • Very flexible in sampling rates, bitrates, etc. • Different profiles for voice and music • Both encoding and decoding vary, in case • Can be mono and stereo (or more, as we’ll see in a minute!) • With the right bitrate, it can sound quite good • ... and most importantly, with the help of WebRTC, real-time! A “live” example: pre-recorded music via WebRTC https://janus.conf.meetecho.com/streamingtest
  • 9. Opus helps already! • WebRTC mandates Opus, and it’s a good thing • High quality audio codec designed for the Internet • Very flexible in sampling rates, bitrates, etc. • Different profiles for voice and music • Both encoding and decoding vary, in case • Can be mono and stereo (or more, as we’ll see in a minute!) • With the right bitrate, it can sound quite good • ... and most importantly, with the help of WebRTC, real-time! A “live” example: pre-recorded music via WebRTC https://janus.conf.meetecho.com/streamingtest
  • 10. Opus helps already! • WebRTC mandates Opus, and it’s a good thing • High quality audio codec designed for the Internet • Very flexible in sampling rates, bitrates, etc. • Different profiles for voice and music • Both encoding and decoding vary, in case • Can be mono and stereo (or more, as we’ll see in a minute!) • With the right bitrate, it can sound quite good • ... and most importantly, with the help of WebRTC, real-time! A “live” example: pre-recorded music via WebRTC https://janus.conf.meetecho.com/streamingtest
  • 11. Multiopus: 5.1 and 7.1 surround audio • This is little known, but Chrome does support surround audio in WebRTC • Not really documented or standardized, though • Mostly just there because it’s used by Stadia, today • Multiopus (5.1 and 7.1) • Each packet is basically OGG with multiple stereo Opus streams • Number of streams determines number of channels • SDP munging needed on both offer and answer to specify the mapping Some reading material if you’re curious • https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in- libwebrtc-and-chrome/ • https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
  • 12. Multiopus: 5.1 and 7.1 surround audio • This is little known, but Chrome does support surround audio in WebRTC • Not really documented or standardized, though • Mostly just there because it’s used by Stadia, today • Multiopus (5.1 and 7.1) • Each packet is basically OGG with multiple stereo Opus streams • Number of streams determines number of channels • SDP munging needed on both offer and answer to specify the mapping Some reading material if you’re curious • https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in- libwebrtc-and-chrome/ • https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
  • 13. Multiopus: 5.1 and 7.1 surround audio • This is little known, but Chrome does support surround audio in WebRTC • Not really documented or standardized, though • Mostly just there because it’s used by Stadia, today • Multiopus (5.1 and 7.1) • Each packet is basically OGG with multiple stereo Opus streams • Number of streams determines number of channels • SDP munging needed on both offer and answer to specify the mapping Some reading material if you’re curious • https://webrtcbydralex.com/index.php/2020/04/08/surround-sound-5-1-and-7-1-in- libwebrtc-and-chrome/ • https://github.com/meetecho/janus-gateway/pull/2059 (now supported in Janus)
  • 14. Tutoring and training • A first simple use case: music lessons • Can be 1-to-1, or 1-to-many • In both cases, the closest to a “traditional” scenario • It can basically be treated as a generic videocall or videoconference • Most of the interaction is conversational • No real need for plugging instruments directly in the call • A regular mic is more than enough in this context • My sister uses Skype to teach her students... • ... so why not WebRTC? Cool add-on: pitch detection? • https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
  • 15. Tutoring and training • A first simple use case: music lessons • Can be 1-to-1, or 1-to-many • In both cases, the closest to a “traditional” scenario • It can basically be treated as a generic videocall or videoconference • Most of the interaction is conversational • No real need for plugging instruments directly in the call • A regular mic is more than enough in this context • My sister uses Skype to teach her students... • ... so why not WebRTC? Cool add-on: pitch detection? • https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
  • 16. Tutoring and training • A first simple use case: music lessons • Can be 1-to-1, or 1-to-many • In both cases, the closest to a “traditional” scenario • It can basically be treated as a generic videocall or videoconference • Most of the interaction is conversational • No real need for plugging instruments directly in the call • A regular mic is more than enough in this context • My sister uses Skype to teach her students... • ... so why not WebRTC? Cool add-on: pitch detection? • https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
  • 17. Tutoring and training • A first simple use case: music lessons • Can be 1-to-1, or 1-to-many • In both cases, the closest to a “traditional” scenario • It can basically be treated as a generic videocall or videoconference • Most of the interaction is conversational • No real need for plugging instruments directly in the call • A regular mic is more than enough in this context • My sister uses Skype to teach her students... • ... so why not WebRTC? Cool add-on: pitch detection? • https://github.com/720kb/TeachMusicRTC (last updated 6 years ago, though)
  • 18. Broadcasting concerts • A more interesting scenario: broadcasting concerts • Basically a 1-to-many (maybe few-to-many?) streaming session • Still traditional, if you will, but with a few caveats • The audio source better not be the browser • Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.) • You want the broadcasted audio to be as close as possible to what was captured • OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here • This scenario is commonly done with HLS, today... • ... but you may want less delay and/or a way to interact with the audience!
  • 19. Broadcasting concerts • A more interesting scenario: broadcasting concerts • Basically a 1-to-many (maybe few-to-many?) streaming session • Still traditional, if you will, but with a few caveats • The audio source better not be the browser • Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.) • You want the broadcasted audio to be as close as possible to what was captured • OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here • This scenario is commonly done with HLS, today... • ... but you may want less delay and/or a way to interact with the audience!
  • 20. Broadcasting concerts • A more interesting scenario: broadcasting concerts • Basically a 1-to-many (maybe few-to-many?) streaming session • Still traditional, if you will, but with a few caveats • The audio source better not be the browser • Browsers mess with the captured audio a lot (e.g., AEC, AGC, etc.) • You want the broadcasted audio to be as close as possible to what was captured • OBS-WebRTC (via WHIP) or the Janus Streaming plugin (wink wink!) can help here • This scenario is commonly done with HLS, today... • ... but you may want less delay and/or a way to interact with the audience!
  • 21. About interacting with the audience...
  • 22. About interacting with the audience...
  • 23. Not really music, but close enough! https://chrisuehlinger.com/blog/2020/06/16/unshattering-the-audience-building-theatre- on-the-web-in-2020
  • 24. Playing with music and WebRTC • Many cool things that can be done with WebRTC • e.g., browser or native app as an UI to a remote music setup • Several more or less basic use cases come to mind • Writing music in a browser • Interaction with (remote) instruments • Visual synchronization of music data • Integration in (remote) DAW • Distributed jam sessions • ...
  • 25. Playing with music and WebRTC • Many cool things that can be done with WebRTC • e.g., browser or native app as an UI to a remote music setup • Several more or less basic use cases come to mind • Writing music in a browser • Interaction with (remote) instruments • Visual synchronization of music data • Integration in (remote) DAW • Distributed jam sessions • ...
  • 26. A silly approach at online composition! https://youtu.be/d1hOR27r4uY?t=1158
  • 27. Playing a keyboard with other people https://youtu.be/8Hzg4hSJMsQ?t=790
  • 28. Playing a keyboard with other people https://youtu.be/8Hzg4hSJMsQ?t=790
  • 29. Web MIDI API + Insertable Streams https://twitter.com/komasshu/status/1329785808446836736
  • 30. Jam sessions • What about really playing with other people, though? • Harder to do because of this ugly pandemic... • 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
  • 31. Jam sessions • What about really playing with other people, though? • Harder to do because of this ugly pandemic... • 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
  • 32. Jam sessions • What about really playing with other people, though? • Harder to do because of this ugly pandemic... • 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
  • 33. What about a native approach? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • It might be interesting to experiment with WebRTC as well • e.g., Native client that uses Jack for audio input/output • WebRTC exchange of live streams (P2P or via a server) Idea for a personal fun/pet project of mine • Native application based on GStreamer • Ability to add local instruments, captured via Jack and encoded with Opus • Janus as the reference WebRTC server for all the jam session “participants” • Publishing local instruments, subscribing to remote ones
  • 34. What about a native approach? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • It might be interesting to experiment with WebRTC as well • e.g., Native client that uses Jack for audio input/output • WebRTC exchange of live streams (P2P or via a server) Idea for a personal fun/pet project of mine • Native application based on GStreamer • Ability to add local instruments, captured via Jack and encoded with Opus • Janus as the reference WebRTC server for all the jam session “participants” • Publishing local instruments, subscribing to remote ones
  • 35. What about a native approach? • A few, non-WebRTC, native solutions exist already • e.g., Jamulus and NINJAM (both open source) • It might be interesting to experiment with WebRTC as well • e.g., Native client that uses Jack for audio input/output • WebRTC exchange of live streams (P2P or via a server) Idea for a personal fun/pet project of mine • Native application based on GStreamer • Ability to add local instruments, captured via Jack and encoded with Opus • Janus as the reference WebRTC server for all the jam session “participants” • Publishing local instruments, subscribing to remote ones
  • 36. The ugliest diagram you’ll see today
  • 37. A distributed/remote concert • Whatever the approach, it might be useful to stream this remote session • A truly distributed concert! • If the session can be captured, it can be broadcast • If an SFU is used, streams can be relayed as-is (they’re already there) • Basically a few-to-many conferencing session • Audio can also be mixed, though, either on the server or client side • Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option • Server-side mixing may be more “balanced” in terms of delay, though? • In general, same considerations made before on broadcasting apply here too
  • 38. A distributed/remote concert • Whatever the approach, it might be useful to stream this remote session • A truly distributed concert! • If the session can be captured, it can be broadcast • If an SFU is used, streams can be relayed as-is (they’re already there) • Basically a few-to-many conferencing session • Audio can also be mixed, though, either on the server or client side • Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option • Server-side mixing may be more “balanced” in terms of delay, though? • In general, same considerations made before on broadcasting apply here too
  • 39. A distributed/remote concert • Whatever the approach, it might be useful to stream this remote session • A truly distributed concert! • If the session can be captured, it can be broadcast • If an SFU is used, streams can be relayed as-is (they’re already there) • Basically a few-to-many conferencing session • Audio can also be mixed, though, either on the server or client side • Many already use OBS for that, so OBS-WebRTC (WHIP) may be a simple option • Server-side mixing may be more “balanced” in terms of delay, though? • In general, same considerations made before on broadcasting apply here too
  • 40. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • https://www.meetecho.com