wwaldner

wwaldner

Process audio data from browser

I have a Phoenix application that I have setup to create a RTP session with LiveView server. LiveView currenty handles the signaling part and I am getting the RTP packets on my LiveView. :grinning:

Now, I am trying to figure out the best way to process the media packets. I see two options.

  1. Use membrane with a custom source element that take the RTP/Opus packets and builds up a pipeline to do whatever processing needs to be done.
  2. Use boombox(this would be my preference). But I don’t see how to create the input that boombox needs. The WebRTC input takes a signaling server(which I have already taken care of). Not sure how to get the RTP packets into boombox so it can create the output. Perhaps I could use Membrane.WebRTC.SignalingChannel, to handle the signalling part and then pass that to BoomBox…However, I have not figured out how the SignalingChannel gets used. Could I start this in my LiveView and pass the signaling messages from client to the SignalingChannel?

Most Liked

mat-hek

mat-hek

Membrane Core Team

Hi, the Membrane way will work, but the SignalingChannel way won’t. The SignalingChannel proxies WebRTC session negotiation messages only - then the RTP messages don’t go through it, but directly to Boombox/WebRTC source. What you would need is Boombox accepting plain RTP. We’re working on that right now, but we also decided it’s high time we paid some tech debt in the Membrane’s RTP implementation, so it may take a month or two.

Last Post!

wwaldner

wwaldner

I ended up going a different direction. Instead of using WebRTC in browser I just capture the audio recorder, downsample to 16k and send it to LiveView.

Where Next?

Popular in Questions Top

RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 130286 1222
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 54006 488
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New

We're in Beta

About us Mission Statement