Hi Folks,
Firstly just wanted to say thank you for an awesome library and examples; I’m only five days into my media soup journey but having a great time learning.
Apologies in advance for not being as skilful as some of the legends here, I’ll try my best to explain what I was trying to achieve and my approaches, and I wondered if I could get a kick in the right direction.
If we create 3 routers, one is the master/apex/leader router and the other two are classed as child routers or sub routers; when a dominant speaker changes in the child/sub router, that producer should be produced to the apex router too.
The apex router essentially becomes a room of rooms with 1 producer for each child router containing just the video for whoever is the dominant speaker in a child room/router
A couple of days ago, I knew nothing about media soup, so I started out with the idea of using pipeToRouter.
So I did a “createActiveSpeakerObserver” to create an observer, and every time that detects a dominant speaker change it will pipe to the apex router the right producer. I got this error “Channel request handler with ID bdb527b0-0a12-428e-aa03-7934d818fa73 already exists” when trying to do the pipe, I haven’t figured that out yet. But!
I’ve always been worried that 1) my approach fundamentally won’t work because I don’t know enough about media soup yet, 2) that eventually that apex room would end up with a producer for everyone in every child room, which could be really heavy even if I marshall the pausing and resuming.
My brain was saying I need 1 producer for the video and to sort of write/copy the data from the dominant speaker producer in the child router into that new producer to go to the apex router. I’m not sure how to achieve this or if it’s possible.
Last night I stumbled on broadcasters in the demo repo, and thought that I could possibly use FFMPEG or GStreamer to create that custom producer and produce the dominant speaker to the apex router.
My question is, would FFMpeg or GStreamer be the right direction to travel, or am I missing a blinding obvious solution in the media soup API?